
/* WARNING: Type propagation algorithm not settling */
/* 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)

{
  byte *pbVar1;
  undefined1 *puVar2;
  _Rb_tree_header *p_Var3;
  _func_int_varargs **pp_Var4;
  int *piVar5;
  code *pcVar6;
  iterator __position;
  Script_options *pSVar7;
  Elf_Word EVar8;
  Output_fill *pOVar9;
  size_t sVar10;
  size_t sVar11;
  Output_section *pOVar12;
  Output_reduced_debug_abbrev_section *pOVar13;
  Output_reduced_debug_info_section *pOVar14;
  int iVar15;
  int iVar16;
  _func_int_varargs *p_Var17;
  byte *pbVar18;
  int unaff_EDI;
  byte *pbVar19;
  bool bVar20;
  bool bVar21;
  bool bVar22;
  bool bVar23;
  byte bVar24;
  bool local_49;
  Output_section *local_38;
  Output_section *os;
  
  bVar24 = 0;
  __x86_get_pc_thunk_di();
  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;
  if ((flags & 2) != 0) goto LAB_000ad790;
  pp_Var4 = *(_func_int_varargs ***)(*(int *)pbVar1 + 8);
  bVar20 = false;
  bVar23 = pp_Var4 == (_func_int_varargs **)0x0;
  if (bVar23) goto LAB_000adfbd;
  iVar15 = 5;
  p_Var17 = pp_Var4[0x267];
  pbVar18 = (byte *)(unaff_EDI + 0x1ab8b3);
  do {
    if (iVar15 == 0) break;
    iVar15 = iVar15 + -1;
    bVar20 = (byte)*p_Var17 < *pbVar18;
    bVar23 = *p_Var17 == (_func_int_varargs)*pbVar18;
    p_Var17 = p_Var17 + (uint)bVar24 * -2 + 1;
    pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
  } while (bVar23);
  bVar21 = false;
  bVar20 = (!bVar20 && !bVar23) == bVar20;
  if (bVar20) {
LAB_000ad742:
    bVar20 = false;
    bVar23 = *(char *)((int)pp_Var4 + 0x3561) == '\0';
    if (bVar23) {
LAB_000ad790:
      bVar20 = type == 0;
      bVar23 = type == 1;
      EVar8 = type;
      if (bVar23) {
        iVar15 = 0xb;
        pbVar18 = &DAT_001a7af8 + unaff_EDI;
        pbVar19 = (byte *)name;
        do {
          if (iVar15 == 0) break;
          iVar15 = iVar15 + -1;
          bVar20 = *pbVar18 < *pbVar19;
          bVar23 = *pbVar18 == *pbVar19;
          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        } while (bVar23);
        bVar21 = false;
        bVar20 = (!bVar20 && !bVar23) == bVar20;
        if (bVar20) {
          type = 0xe;
          EVar8 = type;
        }
        else {
          iVar15 = 0xe;
          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);
          pbVar19 = (byte *)name;
          do {
            if (iVar15 == 0) break;
            iVar15 = iVar15 + -1;
            bVar21 = *pbVar18 < *pbVar19;
            bVar20 = *pbVar18 == *pbVar19;
            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
          } while (bVar20);
          bVar23 = false;
          bVar20 = (!bVar21 && !bVar20) == bVar21;
          if (bVar20) {
            type = 0x10;
            EVar8 = type;
          }
          else {
            iVar15 = 0xb;
            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);
            pbVar19 = (byte *)name;
            do {
              if (iVar15 == 0) break;
              iVar15 = iVar15 + -1;
              bVar23 = *pbVar18 < *pbVar19;
              bVar20 = *pbVar18 == *pbVar19;
              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
            } while (bVar20);
            EVar8 = 0xf;
            if ((!bVar23 && !bVar20) != bVar23) {
              EVar8 = type;
            }
          }
        }
      }
      type = EVar8;
      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);
      if (piVar5 == (int *)0x0) goto LAB_000ae083;
      os = (Output_section *)(**(code **)(*piVar5 + 100))(piVar5,name,type,(undefined4)flags);
    }
    else {
      iVar15 = 0xe;
      pbVar18 = (byte *)(unaff_EDI + 0x1a7b84);
      pbVar19 = (byte *)name;
      do {
        if (iVar15 == 0) break;
        iVar15 = iVar15 + -1;
        bVar20 = *pbVar18 < *pbVar19;
        bVar23 = *pbVar18 == *pbVar19;
        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
      } while (bVar23);
      bVar21 = false;
      bVar20 = (!bVar20 && !bVar23) == bVar20;
      if (bVar20) {
        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x118);
                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */
        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);
        (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->super_Output_section).super_Output_data._vptr_Output_data =
             (_func_int_varargs **)(unaff_EDI + 0x28dddb);
        p_Var3 = &(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_Var3->_M_header;
        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =
             &p_Var3->_M_header;
        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.
        _M_end_of_storage = (pointer)0x0;
        this->debug_abbrev_ = pOVar13;
        pOVar14 = this->debug_info_;
        (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;
        puVar2 = &(pOVar13->super_Output_section).field_0x90;
        *puVar2 = *puVar2 | 0x30;
        os = (Output_section *)pOVar13;
        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {
          pOVar14->associated_abbrev_ = pOVar13;
        }
      }
      else {
        iVar15 = 0xc;
        pbVar18 = (byte *)(unaff_EDI + 0x1a6604);
        pbVar19 = (byte *)name;
        do {
          if (iVar15 == 0) break;
          iVar15 = iVar15 + -1;
          bVar21 = *pbVar18 < *pbVar19;
          bVar20 = *pbVar18 == *pbVar19;
          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        } while (bVar20);
        if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;
        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);
                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */
        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);
        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.
        _M_start = (pointer)0x0;
        pOVar14->failed_ = false;
        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =
             (_func_int_varargs **)(unaff_EDI + 0x28de37);
        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.
        _M_finish = (pointer)0x0;
        this->debug_info_ = pOVar14;
        pOVar13 = this->debug_abbrev_;
        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.
        _M_end_of_storage = (pointer)0x0;
        puVar2 = &(pOVar14->super_Output_section).field_0x90;
        *puVar2 = *puVar2 | 0x30;
        os = (Output_section *)pOVar14;
        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {
          pOVar14->associated_abbrev_ = pOVar13;
        }
      }
    }
  }
  else {
    iVar15 = 6;
    pbVar18 = &DAT_0019de84 + unaff_EDI;
    pbVar19 = (byte *)name;
    do {
      if (iVar15 == 0) break;
      iVar15 = iVar15 + -1;
      bVar21 = *pbVar18 < *pbVar19;
      bVar20 = *pbVar18 == *pbVar19;
      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
    } while (bVar20);
    if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad742;
    pOVar12 = (Output_section *)operator_new(0x108);
                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */
    Output_section::Output_section(pOVar12,name,type,flags);
    *(undefined4 *)&pOVar12[1].super_Output_data.data_size_ = 0;
    *(undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4) = 0;
    (pOVar12->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x28e307);
    pOVar12->field_0x90 = pOVar12->field_0x90 | 0x30;
    pOVar12[1].super_Output_data._vptr_Output_data = pp_Var4;
    *(undefined1 **)((int)&pOVar12[1].super_Output_data.address_ + 4) =
         (undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4);
    os = pOVar12;
  }
  local_38 = os;
  local_49 = is_relro;
  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {
    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;
    bVar20 = (bool)((flags & 2) != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9));
    if ((bVar20 == false) || ((flags & 1) == 0)) goto LAB_000ad7d9;
    if (type == 1) {
      bVar23 = false;
      bVar21 = (flags & 0x400) == 0;
      if (!bVar21) goto LAB_000ad7df;
      iVar15 = 0xd;
      pbVar18 = (byte *)name;
      pbVar19 = (byte *)(unaff_EDI + 0x1a4b74);
      do {
        if (iVar15 == 0) break;
        iVar15 = iVar15 + -1;
        bVar23 = *pbVar18 < *pbVar19;
        bVar21 = *pbVar18 == *pbVar19;
        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
      } while (bVar21);
      bVar22 = false;
      bVar23 = (!bVar23 && !bVar21) == bVar23;
      if (bVar23) goto LAB_000ad7df;
      iVar15 = 0x13;
      pbVar18 = (byte *)name;
      pbVar19 = (byte *)(unaff_EDI + 0x1a7ba1);
      do {
        if (iVar15 == 0) break;
        iVar15 = iVar15 + -1;
        bVar22 = *pbVar18 < *pbVar19;
        bVar23 = *pbVar18 == *pbVar19;
        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
      } while (bVar23);
      bVar21 = false;
      bVar23 = (!bVar22 && !bVar23) == bVar22;
      if (!bVar23) {
        iVar15 = 7;
        pbVar18 = (byte *)name;
        pbVar19 = &DAT_001a7af1 + unaff_EDI;
        do {
          if (iVar15 == 0) break;
          iVar15 = iVar15 + -1;
          bVar21 = *pbVar18 < *pbVar19;
          bVar23 = *pbVar18 == *pbVar19;
          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        } while (bVar23);
        bVar20 = false;
        bVar23 = (!bVar21 && !bVar23) == bVar21;
        if (!bVar23) {
          iVar15 = 7;
          pbVar18 = (byte *)name;
          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);
          do {
            if (iVar15 == 0) break;
            iVar15 = iVar15 + -1;
            bVar20 = *pbVar18 < *pbVar19;
            bVar23 = *pbVar18 == *pbVar19;
            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
          } while (bVar23);
          if (((!bVar20 && !bVar23) != bVar20) &&
             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;
        }
        goto LAB_000ad7df;
      }
    }
    else {
      if (2 < type - 0xe) goto LAB_000ad7d9;
LAB_000ad7df:
      local_49 = false;
      bVar20 = local_49;
    }
    local_49 = bVar20;
    local_38->field_0x91 = local_38->field_0x91 | 0x20;
  }
  else {
LAB_000ad7d9:
    if (is_relro) goto LAB_000ad7df;
  }
  if ((order == ORDER_INVALID) && ((flags & 2) != 0)) {
    order = default_section_order(this,local_38,local_49);
    local_38 = os;
  }
  local_38->order_ = order;
  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;
  pcVar6 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);
  if (pcVar6 != (code *)(unaff_EDI + -0x58979)) {
    (*pcVar6)();
  }
  __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) {
    std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::
    _M_realloc_insert<gold::Output_section*_const&>(&this->section_list_,__position,&os);
  }
  else {
    *__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;
  }
  pOVar12 = os;
  pSVar7 = this->script_options_;
  iVar15 = *(int *)(*(int *)pbVar1 + 8);
  if ((pSVar7->script_sections_).saw_sections_clause_ == false) {
    if (iVar15 == 0) {
LAB_000adfbd:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x5c,(char *)(unaff_EDI + 0x1a8e6f));
    }
    bVar20 = false;
    bVar23 = *(char *)(iVar15 + 0x318d) == '\0';
    if (!bVar23) goto LAB_000ad8b2;
    iVar16 = 0xc;
    pbVar18 = (byte *)name;
    pbVar19 = &DAT_001a7af8 + unaff_EDI;
    do {
      if (iVar16 == 0) break;
      iVar16 = iVar16 + -1;
      bVar20 = *pbVar18 < *pbVar19;
      bVar23 = *pbVar18 == *pbVar19;
      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
    } while (bVar23);
    bVar21 = false;
    bVar20 = (!bVar20 && !bVar23) == bVar20;
    if (bVar20) {
LAB_000ad8a8:
      os->field_0x91 = os->field_0x91 | 4;
    }
    else {
      iVar16 = 0xc;
      pbVar18 = (byte *)name;
      pbVar19 = (byte *)(unaff_EDI + 0x1a7b04);
      do {
        if (iVar16 == 0) break;
        iVar16 = iVar16 + -1;
        bVar21 = *pbVar18 < *pbVar19;
        bVar20 = *pbVar18 == *pbVar19;
        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
      } while (bVar20);
      if ((!bVar21 && !bVar20) == bVar21) goto LAB_000ad8a8;
      bVar20 = false;
      bVar23 = *(char *)(iVar15 + 0xad5) == '\0';
      if (bVar23) {
        iVar16 = 7;
        pbVar18 = (byte *)name;
        pbVar19 = &DAT_001a7af1 + unaff_EDI;
        do {
          if (iVar16 == 0) break;
          iVar16 = iVar16 + -1;
          bVar20 = *pbVar18 < *pbVar19;
          bVar23 = *pbVar18 == *pbVar19;
          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        } while (bVar23);
        bVar21 = false;
        bVar20 = (!bVar20 && !bVar23) == bVar20;
        if (!bVar20) {
          iVar16 = 7;
          pbVar18 = (byte *)name;
          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);
          do {
            if (iVar16 == 0) break;
            iVar16 = iVar16 + -1;
            bVar21 = *pbVar18 < *pbVar19;
            bVar20 = *pbVar18 == *pbVar19;
            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
          } while (bVar20);
          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;
        }
        goto LAB_000ad8a8;
      }
    }
LAB_000ad8b2:
    bVar20 = *(char *)(iVar15 + 0x3ced) == '\0';
    if (((!bVar20) && (bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20))
       && (bVar20 = this->section_ordering_specified_ == false, bVar20)) {
      bVar23 = false;
      bVar20 = *(char *)(iVar15 + 0x318d) == '\0';
      if (bVar20) {
        iVar16 = 6;
        pbVar18 = (byte *)name;
        pbVar19 = &DAT_0019defb + unaff_EDI;
        do {
          if (iVar16 == 0) break;
          iVar16 = iVar16 + -1;
          bVar23 = *pbVar18 < *pbVar19;
          bVar20 = *pbVar18 == *pbVar19;
          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        } while (bVar20);
        bVar20 = (!bVar23 && !bVar20) == bVar23;
        if (bVar20) {
          puVar2 = &os->field_0x91;
          *puVar2 = *puVar2 | 4;
          bVar20 = *puVar2 == '\0';
        }
      }
    }
  }
  else {
    bVar20 = iVar15 == 0;
    if (bVar20) goto LAB_000adfbd;
  }
  local_38 = os;
  bVar23 = false;
  iVar16 = 5;
  pbVar18 = *(byte **)(iVar15 + 0x3820);
  pbVar19 = &DAT_001ab0cb + unaff_EDI;
  do {
    if (iVar16 == 0) break;
    iVar16 = iVar16 + -1;
    bVar23 = *pbVar18 < *pbVar19;
    bVar20 = *pbVar18 == *pbVar19;
    pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
    pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
  } while (bVar20);
  if ((!bVar23 && !bVar20) == bVar23) {
    os->field_0x91 = os->field_0x91 | 8;
  }
  if (type == 3) {
    bVar20 = false;
    bVar23 = this->have_stabstr_section_ == false;
    if (bVar23) {
      iVar15 = 5;
      pbVar18 = (byte *)name;
      pbVar19 = &DAT_0019deab + unaff_EDI;
      do {
        if (iVar15 == 0) break;
        iVar15 = iVar15 + -1;
        bVar20 = *pbVar18 < *pbVar19;
        bVar23 = *pbVar18 == *pbVar19;
        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
      } while (bVar23);
      if ((!bVar20 && !bVar23) == bVar20) {
        sVar11 = strlen(name);
        bVar20 = (undefined1 *)0xffffffef < &stack0xffffffa4;
        bVar23 = &stack0x00000000 == (undefined1 *)0x4c;
        iVar15 = 4;
        pbVar18 = (byte *)(name + (sVar11 - 3));
        pbVar19 = (byte *)(unaff_EDI + 0x1af75d);
        do {
          if (iVar15 == 0) break;
          iVar15 = iVar15 + -1;
          bVar20 = *pbVar18 < *pbVar19;
          bVar23 = *pbVar18 == *pbVar19;
          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        } while (bVar23);
        if ((!bVar20 && !bVar23) == bVar20) {
          this->have_stabstr_section_ = true;
        }
      }
    }
  }
  else if ((type == 1) || (type == 8)) {
    bVar20 = order < ORDER_NON_RELRO_FIRST;
    bVar23 = order == ORDER_NON_RELRO_FIRST;
    if ((ORDER_NON_RELRO_FIRST < order) ||
       (bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20))
    {
      iVar15 = 10;
      pbVar18 = (byte *)name;
      pbVar19 = (byte *)(unaff_EDI + 0x1a0735);
      do {
        if (iVar15 == 0) break;
        iVar15 = iVar15 + -1;
        bVar20 = *pbVar18 < *pbVar19;
        bVar23 = *pbVar18 == *pbVar19;
        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
      } while (bVar23);
      bVar21 = false;
      bVar20 = (!bVar20 && !bVar23) == bVar20;
      if (!bVar20) {
        iVar15 = 7;
        pbVar18 = (byte *)name;
        pbVar19 = &DAT_001a7af1 + unaff_EDI;
        do {
          if (iVar15 == 0) break;
          iVar15 = iVar15 + -1;
          bVar21 = *pbVar18 < *pbVar19;
          bVar20 = *pbVar18 == *pbVar19;
          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        } while (bVar20);
        bVar23 = false;
        bVar20 = (!bVar21 && !bVar20) == bVar21;
        if (!bVar20) {
          iVar15 = 7;
          pbVar18 = (byte *)name;
          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);
          do {
            if (iVar15 == 0) break;
            iVar15 = iVar15 + -1;
            bVar23 = *pbVar18 < *pbVar19;
            bVar20 = *pbVar18 == *pbVar19;
            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
          } while (bVar20);
          bVar21 = false;
          bVar20 = (!bVar23 && !bVar20) == bVar23;
          if (!bVar20) {
            iVar15 = 5;
            pbVar18 = (byte *)name;
            pbVar19 = &DAT_001a7bb4 + unaff_EDI;
            do {
              if (iVar15 == 0) break;
              iVar15 = iVar15 + -1;
              bVar21 = *pbVar18 < *pbVar19;
              bVar20 = *pbVar18 == *pbVar19;
              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
            } while (bVar20);
            if ((!bVar21 && !bVar20) != bVar21) {
              iVar15 = 0xc;
              puVar2 = &os->field_0x92;
              bVar20 = false;
              *puVar2 = *puVar2 | 0x40;
              bVar23 = *puVar2 == '\0';
              pbVar18 = (byte *)name;
              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);
              do {
                if (iVar15 == 0) break;
                iVar15 = iVar15 + -1;
                bVar20 = *pbVar18 < *pbVar19;
                bVar23 = *pbVar18 == *pbVar19;
                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
              } while (bVar23);
              bVar21 = false;
              bVar20 = (!bVar20 && !bVar23) == bVar20;
              if (bVar20) {
                pOVar9 = (Output_fill *)operator_new(8);
                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (_func_int_varargs **)(unaff_EDI + 0x28d063);
                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */
                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,
                                      (char *)(unaff_EDI + 0x1a8e1f));
                }
                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);
                pOVar9->field_0x5 = 0;
                pOVar9->is_big_endian_ = bVar20;
                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);
LAB_000ae026:
                pOVar12->free_space_fill_ = pOVar9;
                sVar10 = Output_fill_debug_info::do_minimum_hole_size
                                   ((Output_fill_debug_info *)pOVar9);
              }
              else {
                iVar15 = 0xd;
                pbVar18 = (byte *)name;
                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);
                do {
                  if (iVar15 == 0) break;
                  iVar15 = iVar15 + -1;
                  bVar21 = *pbVar18 < *pbVar19;
                  bVar20 = *pbVar18 == *pbVar19;
                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
                } while (bVar20);
                bVar23 = false;
                bVar20 = (!bVar21 && !bVar20) == bVar21;
                if (bVar20) {
                  pOVar9 = (Output_fill *)operator_new(8);
                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                       (_func_int_varargs **)(unaff_EDI + 0x28d063);
                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */
                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,
                                        (char *)(unaff_EDI + 0x1a8e1f));
                  }
                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);
                  pOVar9->field_0x5 = 1;
                  pOVar9->is_big_endian_ = bVar20;
                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);
                  goto LAB_000ae026;
                }
                iVar15 = 0xc;
                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);
                do {
                  if (iVar15 == 0) break;
                  iVar15 = iVar15 + -1;
                  bVar23 = (byte)*name < *pbVar18;
                  bVar20 = *name == *pbVar18;
                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);
                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
                } while (bVar20);
                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;
                pOVar9 = (Output_fill *)operator_new(8);
                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (_func_int_varargs **)(unaff_EDI + 0x28d063);
                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */
                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,
                                      (char *)(unaff_EDI + 0x1a8e1f));
                }
                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)
                ;
                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);
                pOVar12->free_space_fill_ = pOVar9;
                sVar10 = Output_fill_debug_line::do_minimum_hole_size
                                   ((Output_fill_debug_line *)pOVar9);
              }
              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;
              local_38 = os;
              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;
            }
          }
        }
      }
    }
  }
LAB_000ad932:
  if (this->sections_are_attached_ != false) {
    if (*(Target **)(*(int *)pbVar1 + 0xc) == (Target *)0x0) {
LAB_000ae083:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f));
    }
    attach_section_to_segment(this,*(Target **)(*(int *)pbVar1 + 0xc),local_38);
    local_38 = os;
  }
  return local_38;
}



int * FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,
                  uint param_6,char param_7)

{
  byte *pbVar1;
  undefined1 uVar2;
  code *pcVar3;
  undefined4 *puVar4;
  int *piVar5;
  size_t sVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  byte *pbVar11;
  int unaff_EDI;
  byte *pbVar12;
  bool bVar13;
  bool bVar14;
  bool bVar15;
  byte bVar16;
  int *local_20;
  
  bVar16 = 0;
  FUN_00058c4a();
  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;
  uVar10 = param_4 & 2;
  if (uVar10 != 0) goto LAB_000ad790;
  iVar8 = *(int *)(*(int *)pbVar1 + 8);
  bVar13 = false;
  bVar15 = iVar8 == 0;
  if (bVar15) goto LAB_000adfbd;
  iVar7 = 5;
  pbVar11 = *(byte **)(iVar8 + 0x99c);
  pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);
  do {
    if (iVar7 == 0) break;
    iVar7 = iVar7 + -1;
    bVar13 = *pbVar11 < *pbVar12;
    bVar15 = *pbVar11 == *pbVar12;
    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
  } while (bVar15);
  bVar14 = false;
  bVar13 = (!bVar13 && !bVar15) == bVar13;
  if (bVar13) {
LAB_000ad742:
    bVar13 = false;
    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';
    if (bVar15) {
LAB_000ad790:
      bVar13 = param_3 == 0;
      bVar15 = param_3 == 1;
      iVar8 = param_3;
      if (bVar15) {
        iVar8 = 0xb;
        pbVar11 = &DAT_001a7af8 + unaff_EDI;
        pbVar12 = param_2;
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar13 = *pbVar11 < *pbVar12;
          bVar15 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar15);
        bVar14 = false;
        bVar13 = (!bVar13 && !bVar15) == bVar13;
        if (bVar13) {
          param_3 = 0xe;
          iVar8 = param_3;
        }
        else {
          iVar8 = 0xe;
          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);
          pbVar12 = param_2;
          do {
            if (iVar8 == 0) break;
            iVar8 = iVar8 + -1;
            bVar14 = *pbVar11 < *pbVar12;
            bVar13 = *pbVar11 == *pbVar12;
            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
          } while (bVar13);
          bVar15 = false;
          bVar13 = (!bVar14 && !bVar13) == bVar14;
          if (bVar13) {
            param_3 = 0x10;
            iVar8 = param_3;
          }
          else {
            iVar8 = 0xb;
            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);
            pbVar12 = param_2;
            do {
              if (iVar8 == 0) break;
              iVar8 = iVar8 + -1;
              bVar15 = *pbVar11 < *pbVar12;
              bVar13 = *pbVar11 == *pbVar12;
              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
            } while (bVar13);
            iVar8 = 0xf;
            if ((!bVar15 && !bVar13) != bVar15) {
              iVar8 = param_3;
            }
          }
        }
      }
      param_3 = iVar8;
      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);
      if (piVar5 == (int *)0x0) goto LAB_000ae083;
      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);
    }
    else {
      iVar8 = 0xe;
      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);
      pbVar12 = param_2;
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar13 = *pbVar11 < *pbVar12;
        bVar15 = *pbVar11 == *pbVar12;
        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
      } while (bVar15);
      bVar14 = false;
      bVar13 = (!bVar13 && !bVar15) == bVar13;
      if (bVar13) {
        local_20 = (int *)FUN_001aa8c0();
                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */
        FUN_000e88d0(local_20,param_2,param_3,param_4);
        local_20[0x3a] = 0;
        local_20[0x3b] = 0;
        *local_20 = unaff_EDI + 0x28dddb;
        local_20[0x40] = (int)(local_20 + 0x3e);
        local_20[0x41] = (int)(local_20 + 0x3e);
        local_20[0x3c] = 0;
        *(int **)(param_1 + 0x1a8) = local_20;
        iVar8 = *(int *)(param_1 + 0x1ac);
        local_20[0x3e] = 0;
        local_20[0x3f] = 0;
        local_20[0x42] = 0;
        *(undefined1 *)(local_20 + 0x43) = 0;
        local_20[0x44] = 0;
        *(undefined1 *)(local_20 + 0x45) = 0;
        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;
        if (iVar8 != 0) {
          *(int **)(iVar8 + 0xf4) = local_20;
        }
      }
      else {
        iVar8 = 0xc;
        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);
        pbVar12 = param_2;
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar14 = *pbVar11 < *pbVar12;
          bVar13 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar13);
        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;
        local_20 = (int *)FUN_001aa8c0();
                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */
        FUN_000e88d0(local_20,param_2,param_3,param_4);
        local_20[0x3a] = 0;
        *(undefined1 *)(local_20 + 0x3e) = 0;
        *local_20 = unaff_EDI + 0x28de37;
        local_20[0x3b] = 0;
        *(int **)(param_1 + 0x1ac) = local_20;
        iVar8 = *(int *)(param_1 + 0x1a8);
        local_20[0x3c] = 0;
        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;
        if (iVar8 != 0) {
          local_20[0x3d] = iVar8;
        }
      }
    }
  }
  else {
    iVar7 = 6;
    pbVar11 = &DAT_0019de84 + unaff_EDI;
    pbVar12 = param_2;
    do {
      if (iVar7 == 0) break;
      iVar7 = iVar7 + -1;
      bVar14 = *pbVar11 < *pbVar12;
      bVar13 = *pbVar11 == *pbVar12;
      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
    } while (bVar13);
    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;
    local_20 = (int *)FUN_001aa8c0();
                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */
    FUN_000e88d0(local_20,param_2,param_3,param_4);
    local_20[0x3d] = 0;
    *(undefined1 *)(local_20 + 0x3e) = 0;
    *local_20 = unaff_EDI + 0x28e307;
    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;
    local_20[0x3a] = iVar8;
    local_20[0x3c] = (int)(local_20 + 0x3e);
  }
  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {
    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;
    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||
       ((param_4 & 1) == 0)) goto LAB_000ad7d9;
    if (param_3 == 1) {
      bVar13 = false;
      bVar15 = (param_4 & 0x400) == 0;
      if (bVar15) {
        iVar8 = 0xd;
        pbVar11 = param_2;
        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar13 = *pbVar11 < *pbVar12;
          bVar15 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar15);
        bVar14 = false;
        bVar13 = (!bVar13 && !bVar15) == bVar13;
        if (!bVar13) {
          iVar8 = 0x13;
          pbVar11 = param_2;
          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);
          do {
            if (iVar8 == 0) break;
            iVar8 = iVar8 + -1;
            bVar14 = *pbVar11 < *pbVar12;
            bVar13 = *pbVar11 == *pbVar12;
            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
          } while (bVar13);
          bVar15 = false;
          bVar13 = (!bVar14 && !bVar13) == bVar14;
          if (!bVar13) {
            iVar8 = 7;
            pbVar11 = param_2;
            pbVar12 = &DAT_001a7af1 + unaff_EDI;
            do {
              if (iVar8 == 0) break;
              iVar8 = iVar8 + -1;
              bVar15 = *pbVar11 < *pbVar12;
              bVar13 = *pbVar11 == *pbVar12;
              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
            } while (bVar13);
            bVar14 = false;
            bVar13 = (!bVar15 && !bVar13) == bVar15;
            if (!bVar13) {
              iVar8 = 7;
              pbVar11 = param_2;
              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);
              do {
                if (iVar8 == 0) break;
                iVar8 = iVar8 + -1;
                bVar14 = *pbVar11 < *pbVar12;
                bVar13 = *pbVar11 == *pbVar12;
                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
              } while (bVar13);
              if (((!bVar14 && !bVar13) != bVar14) &&
                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))
              goto LAB_000ad7d9;
            }
          }
        }
      }
    }
    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;
LAB_000ad7e3:
    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;
  }
  else {
LAB_000ad7d9:
    if (param_7 != '\0') goto LAB_000ad7e3;
  }
  if ((param_6 == 0) && (uVar10 != 0)) {
    param_6 = FUN_000a9050();
  }
  local_20[0x17] = param_6;
  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;
  pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);
  if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {
    (*pcVar3)();
  }
  puVar4 = *(undefined4 **)(param_1 + 0x134);
  if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {
    FUN_000b7440();
  }
  else {
    *puVar4 = local_20;
    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;
  }
  iVar8 = *(int *)(param_1 + 4);
  iVar7 = *(int *)(*(int *)pbVar1 + 8);
  if (*(char *)(iVar8 + 0xac) == '\0') {
    if (iVar7 == 0) {
LAB_000adfbd:
                    /* WARNING: Subroutine does not return */
      FUN_0008b620();
    }
    bVar13 = false;
    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';
    if (!bVar15) goto LAB_000ad8b2;
    iVar9 = 0xc;
    pbVar11 = param_2;
    pbVar12 = &DAT_001a7af8 + unaff_EDI;
    do {
      if (iVar9 == 0) break;
      iVar9 = iVar9 + -1;
      bVar13 = *pbVar11 < *pbVar12;
      bVar15 = *pbVar11 == *pbVar12;
      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
    } while (bVar15);
    bVar14 = false;
    bVar13 = (!bVar13 && !bVar15) == bVar13;
    if (bVar13) {
LAB_000ad8a8:
      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;
    }
    else {
      iVar9 = 0xc;
      pbVar11 = param_2;
      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);
      do {
        if (iVar9 == 0) break;
        iVar9 = iVar9 + -1;
        bVar14 = *pbVar11 < *pbVar12;
        bVar13 = *pbVar11 == *pbVar12;
        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
      } while (bVar13);
      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;
      bVar13 = false;
      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';
      if (bVar15) {
        iVar9 = 7;
        pbVar11 = param_2;
        pbVar12 = &DAT_001a7af1 + unaff_EDI;
        do {
          if (iVar9 == 0) break;
          iVar9 = iVar9 + -1;
          bVar13 = *pbVar11 < *pbVar12;
          bVar15 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar15);
        bVar14 = false;
        bVar13 = (!bVar13 && !bVar15) == bVar13;
        if (!bVar13) {
          iVar9 = 7;
          pbVar11 = param_2;
          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);
          do {
            if (iVar9 == 0) break;
            iVar9 = iVar9 + -1;
            bVar14 = *pbVar11 < *pbVar12;
            bVar13 = *pbVar11 == *pbVar12;
            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
          } while (bVar13);
          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;
        }
        goto LAB_000ad8a8;
      }
    }
LAB_000ad8b2:
    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';
    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&
       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {
      bVar15 = false;
      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';
      if (bVar13) {
        iVar8 = 6;
        pbVar11 = param_2;
        pbVar12 = &DAT_0019defb + unaff_EDI;
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar15 = *pbVar11 < *pbVar12;
          bVar13 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar13);
        bVar13 = (!bVar15 && !bVar13) == bVar15;
        if (bVar13) {
          pbVar11 = (byte *)((int)local_20 + 0x91);
          *pbVar11 = *pbVar11 | 4;
          bVar13 = *pbVar11 == 0;
        }
      }
    }
  }
  else {
    bVar13 = iVar7 == 0;
    if (bVar13) goto LAB_000adfbd;
  }
  bVar15 = false;
  iVar8 = 5;
  pbVar11 = *(byte **)(iVar7 + 0x3820);
  pbVar12 = &DAT_001ab0cb + unaff_EDI;
  do {
    if (iVar8 == 0) break;
    iVar8 = iVar8 + -1;
    bVar15 = *pbVar11 < *pbVar12;
    bVar13 = *pbVar11 == *pbVar12;
    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
  } while (bVar13);
  if ((!bVar15 && !bVar13) == bVar15) {
    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;
  }
  if (param_3 == 3) {
    bVar13 = false;
    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';
    if (bVar15) {
      iVar8 = 5;
      pbVar11 = param_2;
      pbVar12 = &DAT_0019deab + unaff_EDI;
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar13 = *pbVar11 < *pbVar12;
        bVar15 = *pbVar11 == *pbVar12;
        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
      } while (bVar15);
      if ((!bVar13 && !bVar15) == bVar13) {
        sVar6 = strlen((char *)param_2);
        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;
        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;
        iVar8 = 4;
        pbVar11 = param_2 + (sVar6 - 3);
        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar13 = *pbVar11 < *pbVar12;
          bVar15 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar15);
        if ((!bVar13 && !bVar15) == bVar13) {
          *(undefined1 *)(param_1 + 0x1cc) = 1;
        }
      }
    }
  }
  else if ((param_3 == 1) || (param_3 == 8)) {
    bVar13 = param_6 < 0x15;
    bVar15 = param_6 == 0x15;
    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {
      iVar8 = 10;
      pbVar11 = param_2;
      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar13 = *pbVar11 < *pbVar12;
        bVar15 = *pbVar11 == *pbVar12;
        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
      } while (bVar15);
      bVar14 = false;
      bVar13 = (!bVar13 && !bVar15) == bVar13;
      if (!bVar13) {
        iVar8 = 7;
        pbVar11 = param_2;
        pbVar12 = &DAT_001a7af1 + unaff_EDI;
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar14 = *pbVar11 < *pbVar12;
          bVar13 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar13);
        bVar15 = false;
        bVar13 = (!bVar14 && !bVar13) == bVar14;
        if (!bVar13) {
          iVar8 = 7;
          pbVar11 = param_2;
          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);
          do {
            if (iVar8 == 0) break;
            iVar8 = iVar8 + -1;
            bVar15 = *pbVar11 < *pbVar12;
            bVar13 = *pbVar11 == *pbVar12;
            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
          } while (bVar13);
          bVar14 = false;
          bVar13 = (!bVar15 && !bVar13) == bVar15;
          if (!bVar13) {
            iVar8 = 5;
            pbVar11 = param_2;
            pbVar12 = &DAT_001a7bb4 + unaff_EDI;
            do {
              if (iVar8 == 0) break;
              iVar8 = iVar8 + -1;
              bVar14 = *pbVar11 < *pbVar12;
              bVar13 = *pbVar11 == *pbVar12;
              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
            } while (bVar13);
            if ((!bVar14 && !bVar13) != bVar14) {
              iVar8 = 0xc;
              pbVar11 = (byte *)((int)local_20 + 0x92);
              bVar13 = false;
              *pbVar11 = *pbVar11 | 0x40;
              bVar15 = *pbVar11 == 0;
              pbVar11 = param_2;
              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);
              do {
                if (iVar8 == 0) break;
                iVar8 = iVar8 + -1;
                bVar13 = *pbVar11 < *pbVar12;
                bVar15 = *pbVar11 == *pbVar12;
                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
              } while (bVar15);
              bVar14 = false;
              bVar13 = (!bVar13 && !bVar15) == bVar13;
              if (bVar13) {
                piVar5 = (int *)FUN_001aa8c0();
                *piVar5 = unaff_EDI + 0x28d063;
                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */
                  FUN_0008b620();
                }
                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);
                *(undefined1 *)((int)piVar5 + 5) = 0;
                *(undefined1 *)(piVar5 + 1) = uVar2;
                *piVar5 = unaff_EDI + 0x286dc7;
LAB_000ae026:
                local_20[0x36] = (int)piVar5;
                iVar8 = FUN_000e6d80();
              }
              else {
                iVar8 = 0xd;
                pbVar11 = param_2;
                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);
                do {
                  if (iVar8 == 0) break;
                  iVar8 = iVar8 + -1;
                  bVar14 = *pbVar11 < *pbVar12;
                  bVar13 = *pbVar11 == *pbVar12;
                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
                } while (bVar13);
                bVar15 = false;
                bVar13 = (!bVar14 && !bVar13) == bVar14;
                if (bVar13) {
                  piVar5 = (int *)FUN_001aa8c0();
                  *piVar5 = unaff_EDI + 0x28d063;
                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */
                    FUN_0008b620();
                  }
                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);
                  *(undefined1 *)((int)piVar5 + 5) = 1;
                  *(undefined1 *)(piVar5 + 1) = uVar2;
                  *piVar5 = unaff_EDI + 0x286dc7;
                  goto LAB_000ae026;
                }
                iVar8 = 0xc;
                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);
                do {
                  if (iVar8 == 0) break;
                  iVar8 = iVar8 + -1;
                  bVar15 = *param_2 < *pbVar11;
                  bVar13 = *param_2 == *pbVar11;
                  param_2 = param_2 + (uint)bVar16 * -2 + 1;
                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
                } while (bVar13);
                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;
                piVar5 = (int *)FUN_001aa8c0();
                *piVar5 = unaff_EDI + 0x28d063;
                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */
                  FUN_0008b620();
                }
                *(undefined1 *)(piVar5 + 1) =
                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);
                *piVar5 = unaff_EDI + 0x286ddf;
                local_20[0x36] = (int)piVar5;
                iVar8 = FUN_000e6da0();
              }
              local_20[0x34] = iVar8;
              local_20[0x35] = 0;
            }
          }
        }
      }
    }
  }
LAB_000ad932:
  if (*(char *)(param_1 + 0x1c5) != '\0') {
    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
LAB_000ae083:
                    /* WARNING: Subroutine does not return */
      FUN_0008b620();
    }
    FUN_000ad5f0();
  }
  return local_20;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x00058c4a
ADD EDI,0x291947
PUSH ESI
PUSH EBX
SUB ESP,0x3c
MOV EAX,dword ptr [EBP + 0x20]
MOV EBX,dword ptr [EBP + 0x14]
MOV ESI,dword ptr [EBP + 0x18]
MOV dword ptr [EBP + -0x44],EAX
MOV byte ptr [EBP + -0x45],AL
LEA EAX,[EDI + 0x2f0]
MOV dword ptr [EBP + -0x40],EBX
AND EBX,0x2
MOV dword ptr [EBP + -0x30],EAX
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x2c],EDI
MOV dword ptr [EBP + -0x3c],ESI
MOV dword ptr [EBP + -0x38],EBX
JNZ 0x000ad790
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EBP + -0x34],ECX
TEST ECX,ECX
JZ 0x000adfbd
MOV ECX,dword ptr [EBP + -0x34]
MOV EBX,dword ptr [EBP + -0x2c]
MOV ESI,dword ptr [ECX + 0x99c]
LEA EDI,[EBX + 0xfff19f6c]
MOV ECX,0x5
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000ad742
MOV EDI,dword ptr [EBP + 0xc]
MOV ECX,0x6
LEA ESI,[EBX + 0xfff0c53d]
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000adce0
MOV EBX,dword ptr [EBP + -0x34]
CMP byte ptr [EBX + 0x3561],0x0
JZ 0x000ad790
MOV ESI,dword ptr [EBP + -0x2c]
MOV EDI,dword ptr [EBP + 0xc]
MOV ECX,0xe
LEA ESI,[ESI + 0xfff1623d]
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000add48
MOV EDI,dword ptr [EBP + -0x2c]
MOV ECX,0xc
LEA ESI,[EDI + 0xfff14cbd]
MOV EDI,dword ptr [EBP + 0xc]
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000ade10
CMP dword ptr [EBP + 0x10],0x1
JZ 0x000adbb8
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x000ae083
MOV EDX,dword ptr [EAX]
SUB ESP,0xc
PUSH dword ptr [EBP + -0x3c]
PUSH dword ptr [EBP + -0x40]
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH EAX
CALL dword ptr [EDX + 0x64]
MOV dword ptr [EBP + -0x1c],EAX
ADD ESP,0x20
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
CMP byte ptr [EAX + 0xac],0x0
JZ 0x000ad978
MOV EAX,dword ptr [EBP + -0x1c]
MOV dword ptr [EBP + -0x34],EAX
CMP byte ptr [EBP + -0x44],0x0
JZ 0x000ad7ed
MOV byte ptr [EBP + -0x45],0x0
MOV EAX,dword ptr [EBP + -0x34]
OR byte ptr [EAX + 0x91],0x20
MOV EAX,dword ptr [EBP + 0x1c]
TEST EAX,EAX
JNZ 0x000ad7ff
MOV EAX,dword ptr [EBP + -0x38]
TEST EAX,EAX
JNZ 0x000adee0
MOV EAX,dword ptr [EBP + -0x34]
MOV EBX,dword ptr [EBP + 0x1c]
MOV dword ptr [EAX + 0x5c],EBX
MOV EAX,dword ptr [EBP + -0x30]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x000ae083
MOV EDX,dword ptr [EAX]
MOV EBX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EDX + 0xc]
LEA ECX,[EBX + 0xffd15d40]
CMP EDX,ECX
JNZ 0x000adea0
MOV EAX,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x134]
CMP EAX,dword ptr [ECX + 0x138]
JZ 0x000adeb8
MOV EDX,dword ptr [EBP + -0x1c]
ADD EAX,0x4
MOV dword ptr [EAX + -0x4],EDX
MOV dword ptr [ECX + 0x134],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EBP + -0x30]
MOV EAX,dword ptr [EAX]
CMP byte ptr [EDX + 0xac],0x0
MOV EAX,dword ptr [EAX + 0x8]
JNZ 0x000adb28
TEST EAX,EAX
JZ 0x000adfbd
MOV EDI,dword ptr [EBP + -0x1c]
CMP byte ptr [EAX + 0x318d],0x0
MOV dword ptr [EBP + -0x34],EDI
JNZ 0x000ad8b2
MOV EBX,dword ptr [EBP + -0x2c]
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0xc
LEA EDI,[EBX + 0xfff161b1]
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JNZ 0x000adc30
MOV ECX,dword ptr [EBP + -0x34]
OR byte ptr [ECX + 0x91],0x4
CMP byte ptr [EAX + 0x3ced],0x0
JZ 0x000ad8d8
CMP byte ptr [EDX + 0xac],0x0
JNZ 0x000ad8d8
MOV ESI,dword ptr [EBP + 0x8]
CMP byte ptr [ESI + 0x1cd],0x0
JZ 0x000adca0
LEA ESI,[ESI]
MOV ESI,dword ptr [EAX + 0x3820]
MOV EAX,dword ptr [EBP + -0x2c]
MOV ECX,0x5
LEA EDI,[EAX + 0xfff19784]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x000ad901
MOV EAX,dword ptr [EBP + -0x34]
OR byte ptr [EAX + 0x91],0x8
CMP dword ptr [EBP + 0x10],0x3
JZ 0x000adb40
CMP dword ptr [EBP + 0x10],0x1
JZ 0x000ad917
CMP dword ptr [EBP + 0x10],0x8
JNZ 0x000ad932
CMP dword ptr [EBP + 0x1c],0x15
JA 0x000ad9d0
MOV EDI,dword ptr [EBP + 0x1c]
MOV EAX,0x3020c2
BT EAX,EDI
JNC 0x000ad9d0
MOV EAX,dword ptr [EBP + 0x8]
CMP byte ptr [EAX + 0x1c5],0x0
JZ 0x000ad966
MOV EAX,dword ptr [EBP + -0x30]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x000ae083
SUB ESP,0x4
PUSH dword ptr [EBP + -0x34]
PUSH EAX
PUSH dword ptr [EBP + 0x8]
CALL 0x000ad5f0
MOV EAX,dword ptr [EBP + -0x1c]
ADD ESP,0x10
MOV dword ptr [EBP + -0x34],EAX
MOV EAX,dword ptr [EBP + -0x34]
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + -0x30]
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX + 0x8]
TEST EDX,EDX
JZ 0x000adfbd
MOV EAX,dword ptr [EBP + -0x38]
MOV EBX,dword ptr [EBP + -0x1c]
TEST EAX,EAX
MOV dword ptr [EBP + -0x34],EBX
SETNZ AL
AND AL,byte ptr [EDX + 0x56b9]
JZ 0x000ad7d9
MOV EDX,dword ptr [EBP + -0x40]
AND EDX,0x1
JZ 0x000ad7d9
CMP dword ptr [EBP + 0x10],0x1
JZ 0x000adf18
MOV EAX,dword ptr [EBP + 0x10]
SUB EAX,0xe
CMP EAX,0x2
JBE 0x000ad7df
JMP 0x000ad7d9
MOV EDX,dword ptr [EBP + -0x2c]
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0xa
LEA EDI,[EDX + 0xfff0edee]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x000ad932
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0x7
LEA EDI,[EDX + 0xfff161aa]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x000ad932
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0x7
LEA EDI,[EDX + 0xfff161c9]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x000ad932
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0x5
LEA EDI,[EDX + 0xfff1626d]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x000ad932
MOV EAX,dword ptr [EBP + -0x34]
MOV ECX,0xc
LEA EDI,[EDX + 0xfff14cbd]
OR byte ptr [EAX + 0x92],0x40
MOV ESI,dword ptr [EBP + 0xc]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x000adfde
MOV EAX,dword ptr [EBP + -0x2c]
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0xd
LEA EDI,[EAX + 0xfff14cc9]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x000ae03d
MOV EAX,dword ptr [EBP + -0x2c]
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0xc
LEA EDI,[EAX + 0xfff16272]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x000ad932
SUB ESP,0xc
MOV EDI,dword ptr [EBP + -0x2c]
PUSH 0x8
MOV EBX,EDI
CALL 0x001aa8c0
ADD ESP,0x10
MOV ESI,EAX
LEA EAX,[EDI + 0xffffb71c]
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EBP + -0x30]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x000ae09c
MOV EAX,dword ptr [EAX + 0x4]
MOV EBX,dword ptr [EBP + -0x2c]
SUB ESP,0xc
MOV EDI,dword ptr [EBP + -0x34]
MOVZX EAX,byte ptr [EAX + 0x4]
MOV byte ptr [ESI + 0x4],AL
LEA EAX,[EBX + 0xffff5490]
ADD EAX,0x8
MOV dword ptr [ESI],EAX
MOV dword ptr [EDI + 0xd8],ESI
PUSH ESI
CALL 0x000e6da0
MOV dword ptr [EDI + 0xd0],EAX
MOV EAX,dword ptr [EBP + -0x1c]
ADD ESP,0x10
MOV dword ptr [EDI + 0xd4],0x0
MOV dword ptr [EBP + -0x34],EAX
JMP 0x000ad932
TEST EAX,EAX
JZ 0x000adfbd
MOV ECX,dword ptr [EBP + -0x1c]
MOV dword ptr [EBP + -0x34],ECX
JMP 0x000ad8d8
MOV EAX,dword ptr [EBP + 0x8]
CMP byte ptr [EAX + 0x1cc],0x0
JNZ 0x000ad932
MOV EDX,dword ptr [EBP + -0x2c]
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0x5
LEA EDI,[EDX + 0xfff0c564]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x000ad932
SUB ESP,0xc
PUSH dword ptr [EBP + 0xc]
MOV EBX,EDX
MOV EDI,EDX
LEA EDI,[EDI + 0xfff1de16]
CALL 0x000285f0
MOV ECX,dword ptr [EBP + 0xc]
ADD ESP,0x10
LEA ESI,[ECX + EAX*0x1 + -0x3]
MOV ECX,0x4
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x000ad932
MOV EAX,dword ptr [EBP + 0x8]
MOV byte ptr [EAX + 0x1cc],0x1
JMP 0x000ad932
MOV EBX,dword ptr [EBP + -0x2c]
MOV EDI,dword ptr [EBP + 0xc]
MOV ECX,0xb
LEA ESI,[EBX + 0xfff161b1]
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000adc20
MOV EDI,dword ptr [EBP + 0xc]
MOV ECX,0xe
LEA ESI,[EBX + 0xfff1624b]
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000adf08
MOV EDI,dword ptr [EBP + 0xc]
MOV ECX,0xb
LEA ESI,[EBX + 0xfff161bd]
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
MOV EDX,0xf
CMOVNZ EDX,dword ptr [EBP + 0x10]
MOV dword ptr [EBP + 0x10],EDX
JMP 0x000ad79a
MOV dword ptr [EBP + 0x10],0xe
JMP 0x000ad79a
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0xc
LEA EDI,[EBX + 0xfff161bd]
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x000ad8a8
CMP byte ptr [EAX + 0xad5],0x0
JNZ 0x000ad8b2
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0x7
LEA EDI,[EBX + 0xfff161aa]
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x000ad8a8
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0x7
LEA EDI,[EBX + 0xfff161c9]
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JNZ 0x000ad8b2
JMP 0x000ad8a8
CMP byte ptr [EAX + 0x318d],0x0
JNZ 0x000ad8d8
MOV ESI,dword ptr [EBP + -0x2c]
MOV ECX,0x6
LEA EDI,[ESI + 0xfff0c5b4]
MOV ESI,dword ptr [EBP + 0xc]
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JNZ 0x000ad8d8
MOV ECX,dword ptr [EBP + -0x34]
OR byte ptr [ECX + 0x91],0x4
JMP 0x000ad8d8
SUB ESP,0xc
PUSH 0x108
CALL 0x001aa8c0
MOV ESI,EAX
POP EAX
PUSH dword ptr [EBP + -0x3c]
PUSH dword ptr [EBP + -0x40]
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH ESI
CALL 0x000e88d0
LEA EAX,[EBX + 0xffffc9b8]
ADD ESP,0x20
MOV dword ptr [EBP + -0x1c],ESI
MOV dword ptr [ESI + 0xf4],0x0
ADD EAX,0x8
MOV byte ptr [ESI + 0xf8],0x0
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EBP + -0x34]
OR byte ptr [ESI + 0x90],0x30
MOV dword ptr [ESI + 0xe8],EAX
LEA EAX,[ESI + 0xf8]
MOV dword ptr [ESI + 0xf0],EAX
JMP 0x000ad7c0
SUB ESP,0xc
MOV EDI,dword ptr [EBP + -0x2c]
PUSH 0x118
MOV EBX,EDI
CALL 0x001aa8c0
MOV ESI,EAX
POP EAX
PUSH dword ptr [EBP + -0x3c]
PUSH dword ptr [EBP + -0x40]
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH ESI
CALL 0x000e88d0
LEA EAX,[EDI + 0xffffc48c]
ADD ESP,0x20
MOV dword ptr [EBP + -0x1c],ESI
MOV dword ptr [ESI + 0xe8],0x0
ADD EAX,0x8
MOV dword ptr [ESI + 0xec],0x0
MOV dword ptr [ESI],EAX
LEA EAX,[ESI + 0xf8]
MOV dword ptr [ESI + 0x100],EAX
MOV dword ptr [ESI + 0x104],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [ESI + 0xf0],0x0
MOV dword ptr [EAX + 0x1a8],ESI
MOV EAX,dword ptr [EAX + 0x1ac]
MOV dword ptr [ESI + 0xf8],0x0
MOV dword ptr [ESI + 0xfc],0x0
MOV dword ptr [ESI + 0x108],0x0
MOV byte ptr [ESI + 0x10c],0x0
MOV dword ptr [ESI + 0x110],0x0
MOV byte ptr [ESI + 0x114],0x0
OR byte ptr [ESI + 0x90],0x30
TEST EAX,EAX
JZ 0x000ad7c0
MOV dword ptr [EAX + 0xf4],ESI
JMP 0x000ad7c0
SUB ESP,0xc
MOV EDI,dword ptr [EBP + -0x2c]
PUSH 0xfc
MOV EBX,EDI
CALL 0x001aa8c0
POP ECX
PUSH dword ptr [EBP + -0x3c]
PUSH dword ptr [EBP + -0x40]
MOV ESI,EAX
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH EAX
CALL 0x000e88d0
LEA EAX,[EDI + 0xffffc4e8]
ADD ESP,0x20
MOV dword ptr [EBP + -0x1c],ESI
MOV dword ptr [ESI + 0xe8],0x0
ADD EAX,0x8
MOV byte ptr [ESI + 0xf8],0x0
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [ESI + 0xec],0x0
MOV dword ptr [EAX + 0x1ac],ESI
MOV EAX,dword ptr [EAX + 0x1a8]
MOV dword ptr [ESI + 0xf0],0x0
OR byte ptr [ESI + 0x90],0x30
TEST EAX,EAX
JZ 0x000ad7c0
MOV dword ptr [ESI + 0xf4],EAX
JMP 0x000ad7c0
SUB ESP,0x8
PUSH dword ptr [EBP + -0x34]
PUSH EAX
CALL EDX
ADD ESP,0x10
JMP 0x000ad82e
SUB ESP,0x4
LEA EDX,[EBP + -0x1c]
PUSH EDX
PUSH EAX
MOV EAX,dword ptr [EBP + 0x8]
ADD EAX,0x130
PUSH EAX
CALL 0x000b7440
ADD ESP,0x10
JMP 0x000ad855
MOVZX EAX,byte ptr [EBP + -0x45]
SUB ESP,0x4
PUSH EAX
PUSH dword ptr [EBP + -0x34]
PUSH dword ptr [EBP + 0x8]
CALL 0x000a9050
ADD ESP,0x10
MOV dword ptr [EBP + 0x1c],EAX
MOV EAX,dword ptr [EBP + -0x1c]
MOV dword ptr [EBP + -0x34],EAX
JMP 0x000ad7ff
MOV dword ptr [EBP + 0x10],0x10
JMP 0x000ad79a
MOV EDX,dword ptr [EBP + -0x40]
AND EDX,0x400
JNZ 0x000ad7df
MOV EBX,dword ptr [EBP + -0x2c]
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0xd
LEA EDI,[EBX + 0xfff1322d]
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000ad7df
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0x13
LEA EDI,[EBX + 0xfff1625a]
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000adfd6
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0x7
LEA EDI,[EBX + 0xfff161aa]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x000ad7df
MOV ESI,dword ptr [EBP + 0xc]
MOV ECX,0x7
LEA EDI,[EBX + 0xfff161c9]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x000ad7df
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfff1626d]
PUSH EAX
PUSH dword ptr [EBP + 0xc]
CALL 0x00028b10
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000ad7df
JMP 0x000ad7d9
MOV EBX,dword ptr [EBP + -0x2c]
PUSH EAX
LEA EAX,[EBX + 0xfff17528]
PUSH EAX
LEA EAX,[EBX + 0xfff0726d]
PUSH 0x5c
PUSH EAX
CALL 0x0008b620
MOV byte ptr [EBP + -0x45],AL
JMP 0x000ad7e3
SUB ESP,0xc
MOV EDI,dword ptr [EBP + -0x2c]
PUSH 0x8
MOV EBX,EDI
CALL 0x001aa8c0
ADD ESP,0x10
MOV ESI,EAX
LEA EAX,[EDI + 0xffffb71c]
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EBP + -0x30]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x000ae0b5
MOV EAX,dword ptr [EAX + 0x4]
MOV EBX,dword ptr [EBP + -0x2c]
MOVZX EAX,byte ptr [EAX + 0x4]
MOV byte ptr [ESI + 0x5],0x0
MOV byte ptr [ESI + 0x4],AL
LEA EAX,[EBX + 0xffff5478]
ADD EAX,0x8
MOV dword ptr [ESI],EAX
MOV EDI,dword ptr [EBP + -0x34]
SUB ESP,0xc
MOV dword ptr [EDI + 0xd8],ESI
PUSH ESI
CALL 0x000e6d80
JMP 0x000adb04
SUB ESP,0xc
MOV EDI,dword ptr [EBP + -0x2c]
PUSH 0x8
MOV EBX,EDI
CALL 0x001aa8c0
ADD ESP,0x10
MOV ESI,EAX
LEA EAX,[EDI + 0xffffb71c]
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EBP + -0x30]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x000ae0ce
MOV EAX,dword ptr [EAX + 0x4]
MOV EBX,dword ptr [EBP + -0x2c]
MOVZX EAX,byte ptr [EAX + 0x4]
MOV byte ptr [ESI + 0x5],0x1
MOV byte ptr [ESI + 0x4],AL
LEA EAX,[EBX + 0xffff5478]
ADD EAX,0x8
MOV dword ptr [ESI],EAX
JMP 0x000ae026
MOV EBX,dword ptr [EBP + -0x2c]
PUSH EDX
LEA EAX,[EBX + 0xfff174d8]
PUSH EAX
LEA EAX,[EBX + 0xfff0726d]
PUSH 0x69
PUSH EAX
CALL 0x0008b620
MOV EBX,dword ptr [EBP + -0x2c]
PUSH EDI
LEA EAX,[EBX + 0xfff174d8]
PUSH EAX
LEA EAX,[EBX + 0xfff0726d]
PUSH 0x69
PUSH EAX
CALL 0x0008b620
MOV EBX,dword ptr [EBP + -0x2c]
PUSH EAX
LEA EAX,[EBX + 0xfff174d8]
PUSH EAX
LEA EAX,[EBX + 0xfff0726d]
PUSH 0x69
PUSH EAX
CALL 0x0008b620
MOV EBX,dword ptr [EBP + -0x2c]
PUSH EAX
LEA EAX,[EBX + 0xfff174d8]
PUSH EAX
LEA EAX,[EBX + 0xfff0726d]
PUSH 0x69
PUSH EAX
CALL 0x0008b620
(translation_unit "int * FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)\n\n{\n  byte *pbVar1;\n  undefined1 uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  byte *pbVar11;\n  int unaff_EDI;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  int *local_20;\n  \n  bVar16 = 0;\n  FUN_00058c4a();\n  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;\n  uVar10 = param_4 & 2;\n  if (uVar10 != 0) goto LAB_000ad790;\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  bVar13 = false;\n  bVar15 = iVar8 == 0;\n  if (bVar15) goto LAB_000adfbd;\n  iVar7 = 5;\n  pbVar11 = *(byte **)(iVar8 + 0x99c);\n  pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);\n  do {\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }\n  else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */\n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }\n  if ((param_6 == 0) && (uVar10 != 0)) {\n    param_6 = FUN_000a9050();\n  }\n  local_20[0x17] = param_6;\n  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;\n  pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);\n  if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar3)();\n  }\n  puVar4 = *(undefined4 **)(param_1 + 0x134);\n  if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {\n    FUN_000b7440();\n  }\n  else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }\n  iVar8 = *(int *)(param_1 + 4);\n  iVar7 = *(int *)(*(int *)pbVar1 + 8);\n  if (*(char *)(iVar8 + 0xac) == '\0') {\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }\n  bVar15 = false;\n  iVar8 = 5;\n  pbVar11 = *(byte **)(iVar7 + 0x3820);\n  pbVar12 = &DAT_001ab0cb + unaff_EDI;\n  do {\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar13);\n  if ((!bVar15 && !bVar13) == bVar15) {\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }\n  if (param_3 == 3) {\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_000ad932:\n  if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }\n  return local_20;\n}\n\n" (function_definition "int * FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)\n\n{\n  byte *pbVar1;\n  undefined1 uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  byte *pbVar11;\n  int unaff_EDI;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  int *local_20;\n  \n  bVar16 = 0;\n  FUN_00058c4a();\n  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;\n  uVar10 = param_4 & 2;\n  if (uVar10 != 0) goto LAB_000ad790;\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  bVar13 = false;\n  bVar15 = iVar8 == 0;\n  if (bVar15) goto LAB_000adfbd;\n  iVar7 = 5;\n  pbVar11 = *(byte **)(iVar8 + 0x99c);\n  pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);\n  do {\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }\n  else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */\n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }\n  if ((param_6 == 0) && (uVar10 != 0)) {\n    param_6 = FUN_000a9050();\n  }\n  local_20[0x17] = param_6;\n  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;\n  pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);\n  if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar3)();\n  }\n  puVar4 = *(undefined4 **)(param_1 + 0x134);\n  if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {\n    FUN_000b7440();\n  }\n  else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }\n  iVar8 = *(int *)(param_1 + 4);\n  iVar7 = *(int *)(*(int *)pbVar1 + 8);\n  if (*(char *)(iVar8 + 0xac) == '\0') {\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }\n  bVar15 = false;\n  iVar8 = 5;\n  pbVar11 = *(byte **)(iVar7 + 0x3820);\n  pbVar12 = &DAT_001ab0cb + unaff_EDI;\n  do {\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar13);\n  if ((!bVar15 && !bVar13) == bVar15) {\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }\n  if (param_3 == 3) {\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_000ad932:\n  if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }\n  return local_20;\n}" primitive_type (pointer_declarator "* FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)" * (function_declarator "FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)" identifier (parameter_list "(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "char param_7" primitive_type identifier) )))) (compound_statement "{\n  byte *pbVar1;\n  undefined1 uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  byte *pbVar11;\n  int unaff_EDI;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  int *local_20;\n  \n  bVar16 = 0;\n  FUN_00058c4a();\n  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;\n  uVar10 = param_4 & 2;\n  if (uVar10 != 0) goto LAB_000ad790;\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  bVar13 = false;\n  bVar15 = iVar8 == 0;\n  if (bVar15) goto LAB_000adfbd;\n  iVar7 = 5;\n  pbVar11 = *(byte **)(iVar8 + 0x99c);\n  pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);\n  do {\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }\n  else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */\n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }\n  if ((param_6 == 0) && (uVar10 != 0)) {\n    param_6 = FUN_000a9050();\n  }\n  local_20[0x17] = param_6;\n  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;\n  pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);\n  if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar3)();\n  }\n  puVar4 = *(undefined4 **)(param_1 + 0x134);\n  if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {\n    FUN_000b7440();\n  }\n  else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }\n  iVar8 = *(int *)(param_1 + 4);\n  iVar7 = *(int *)(*(int *)pbVar1 + 8);\n  if (*(char *)(iVar8 + 0xac) == '\0') {\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }\n  bVar15 = false;\n  iVar8 = 5;\n  pbVar11 = *(byte **)(iVar7 + 0x3820);\n  pbVar12 = &DAT_001ab0cb + unaff_EDI;\n  do {\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar13);\n  if ((!bVar15 && !bVar13) == bVar15) {\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }\n  if (param_3 == 3) {\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_000ad932:\n  if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }\n  return local_20;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "FUN_00058c4a();" (call_expression "FUN_00058c4a()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;" (assignment_expression "pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2" identifier = (binary_expression "BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2" (binary_expression "BYTE_ARRAY_00291b75 + unaff_EDI" identifier + identifier) + number_literal)) ;) (expression_statement "uVar10 = param_4 & 2;" (assignment_expression "uVar10 = param_4 & 2" identifier = (binary_expression "param_4 & 2" identifier & number_literal)) ;) (if_statement "if (uVar10 != 0) goto LAB_000ad790;" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000ad790;" goto statement_identifier ;)) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = iVar8 == 0;" (assignment_expression "bVar15 = iVar8 == 0" identifier = (binary_expression "iVar8 == 0" identifier == number_literal)) ;) (if_statement "if (bVar15) goto LAB_000adfbd;" if (parenthesized_expression "(bVar15)" ( identifier )) (goto_statement "goto LAB_000adfbd;" goto statement_identifier ;)) (expression_statement "iVar7 = 5;" (assignment_expression "iVar7 = 5" identifier = number_literal) ;) (expression_statement "pbVar11 = *(byte **)(iVar8 + 0x99c);" (assignment_expression "pbVar11 = *(byte **)(iVar8 + 0x99c)" identifier = (pointer_expression "*(byte **)(iVar8 + 0x99c)" * (cast_expression "(byte **)(iVar8 + 0x99c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x99c)" ( (binary_expression "iVar8 + 0x99c" identifier + number_literal) ))))) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1ab8b3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1ab8b3)" ( (binary_expression "unaff_EDI + 0x1ab8b3" identifier + number_literal) )))) ;) (do_statement "do {\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar15);" do (compound_statement "{\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  }" { (if_statement "if (iVar7 == 0) break;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }\n  else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */\n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }" { (labeled_statement "LAB_000ad742:\n    bVar13 = false;" statement_identifier : (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;)) (expression_statement "bVar15 = *(char *)(iVar8 + 0x3561) == '\0';" (assignment_expression "bVar15 = *(char *)(iVar8 + 0x3561) == '\0'" identifier = (binary_expression "*(char *)(iVar8 + 0x3561) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x3561)" * (cast_expression "(char *)(iVar8 + 0x3561)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x3561)" ( (binary_expression "iVar8 + 0x3561" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }" { (labeled_statement "LAB_000ad790:\n      bVar13 = param_3 == 0;" statement_identifier : (expression_statement "bVar13 = param_3 == 0;" (assignment_expression "bVar13 = param_3 == 0" identifier = (binary_expression "param_3 == 0" identifier == number_literal)) ;)) (expression_statement "bVar15 = param_3 == 1;" (assignment_expression "bVar15 = param_3 == 1" identifier = (binary_expression "param_3 == 1" identifier == number_literal)) ;) (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" identifier = identifier) ;) (if_statement "if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }" { (expression_statement "iVar8 = 0xb;" (assignment_expression "iVar8 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar11 = &DAT_001a7af8 + unaff_EDI;" (assignment_expression "pbVar11 = &DAT_001a7af8 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af8 + unaff_EDI" (pointer_expression "&DAT_001a7af8" & identifier) + identifier)) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }" { (expression_statement "param_3 = 0xe;" (assignment_expression "param_3 = 0xe" identifier = number_literal) ;) (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" identifier = identifier) ;) }) (else_clause "else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }" else (compound_statement "{\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }" { (expression_statement "iVar8 = 0xe;" (assignment_expression "iVar8 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7b92)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b92)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b92)" ( (binary_expression "unaff_EDI + 0x1a7b92" identifier + number_literal) )))) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" do (compound_statement "{\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }" { (expression_statement "param_3 = 0x10;" (assignment_expression "param_3 = 0x10" identifier = number_literal) ;) (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" identifier = identifier) ;) }) (else_clause "else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }" else (compound_statement "{\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }" { (expression_statement "iVar8 = 0xb;" (assignment_expression "iVar8 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7b04)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b04)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b04)" ( (binary_expression "unaff_EDI + 0x1a7b04" identifier + number_literal) )))) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);" do (compound_statement "{\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "iVar8 = 0xf;" (assignment_expression "iVar8 = 0xf" identifier = number_literal) ;) (if_statement "if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }" if (parenthesized_expression "((!bVar15 && !bVar13) != bVar15)" ( (binary_expression "(!bVar15 && !bVar13) != bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (compound_statement "{\n              iVar8 = param_3;\n            }" { (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" identifier = identifier) ;) })) }))) }))) })) (expression_statement "param_3 = iVar8;" (assignment_expression "param_3 = iVar8" identifier = identifier) ;) (expression_statement "piVar5 = *(int **)(*(int *)pbVar1 + 0xc);" (assignment_expression "piVar5 = *(int **)(*(int *)pbVar1 + 0xc)" identifier = (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (piVar5 == (int *)0x0) goto LAB_000ae083;" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000ae083;" goto statement_identifier ;)) (expression_statement "local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);" (assignment_expression "local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4)" identifier = (cast_expression "(int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4)" (parenthesized_expression "(**(code **)(*piVar5 + 100))" ( (pointer_expression "**(code **)(*piVar5 + 100)" * (pointer_expression "*(code **)(*piVar5 + 100)" * (cast_expression "(code **)(*piVar5 + 100)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 100)" ( (binary_expression "*piVar5 + 100" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))))) ;) }) (else_clause "else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }" else (compound_statement "{\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }" { (expression_statement "iVar8 = 0xe;" (assignment_expression "iVar8 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7b84)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b84)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b84)" ( (binary_expression "unaff_EDI + 0x1a7b84" identifier + number_literal) )))) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }" { (expression_statement "local_20 = (int *)FUN_001aa8c0();" (assignment_expression "local_20 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) comment (expression_statement "FUN_000e88d0(local_20,param_2,param_3,param_4);" (call_expression "FUN_000e88d0(local_20,param_2,param_3,param_4)" identifier (argument_list "(local_20,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_20[0x3a] = 0;" (assignment_expression "local_20[0x3a] = 0" (subscript_expression "local_20[0x3a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[0x3b] = 0;" (assignment_expression "local_20[0x3b] = 0" (subscript_expression "local_20[0x3b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*local_20 = unaff_EDI + 0x28dddb;" (assignment_expression "*local_20 = unaff_EDI + 0x28dddb" (pointer_expression "*local_20" * identifier) = (binary_expression "unaff_EDI + 0x28dddb" identifier + number_literal)) ;) (expression_statement "local_20[0x40] = (int)(local_20 + 0x3e);" (assignment_expression "local_20[0x40] = (int)(local_20 + 0x3e)" (subscript_expression "local_20[0x40]" identifier [ number_literal ]) = (cast_expression "(int)(local_20 + 0x3e)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_20 + 0x3e)" ( (binary_expression "local_20 + 0x3e" identifier + number_literal) )))) ;) (expression_statement "local_20[0x41] = (int)(local_20 + 0x3e);" (assignment_expression "local_20[0x41] = (int)(local_20 + 0x3e)" (subscript_expression "local_20[0x41]" identifier [ number_literal ]) = (cast_expression "(int)(local_20 + 0x3e)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_20 + 0x3e)" ( (binary_expression "local_20 + 0x3e" identifier + number_literal) )))) ;) (expression_statement "local_20[0x3c] = 0;" (assignment_expression "local_20[0x3c] = 0" (subscript_expression "local_20[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int **)(param_1 + 0x1a8) = local_20;" (assignment_expression "*(int **)(param_1 + 0x1a8) = local_20" (pointer_expression "*(int **)(param_1 + 0x1a8)" * (cast_expression "(int **)(param_1 + 0x1a8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1a8)" ( (binary_expression "param_1 + 0x1a8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x1ac);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x1ac)" identifier = (pointer_expression "*(int *)(param_1 + 0x1ac)" * (cast_expression "(int *)(param_1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) ))))) ;) (expression_statement "local_20[0x3e] = 0;" (assignment_expression "local_20[0x3e] = 0" (subscript_expression "local_20[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[0x3f] = 0;" (assignment_expression "local_20[0x3f] = 0" (subscript_expression "local_20[0x3f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[0x42] = 0;" (assignment_expression "local_20[0x42] = 0" (subscript_expression "local_20[0x42]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(local_20 + 0x43) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x43) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x43)" * (cast_expression "(undefined1 *)(local_20 + 0x43)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x43)" ( (binary_expression "local_20 + 0x43" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_20[0x44] = 0;" (assignment_expression "local_20[0x44] = 0" (subscript_expression "local_20[0x44]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(local_20 + 0x45) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x45) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x45)" * (cast_expression "(undefined1 *)(local_20 + 0x45)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x45)" ( (binary_expression "local_20 + 0x45" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;" (assignment_expression "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }" { (expression_statement "*(int **)(iVar8 + 0xf4) = local_20;" (assignment_expression "*(int **)(iVar8 + 0xf4) = local_20" (pointer_expression "*(int **)(iVar8 + 0xf4)" * (cast_expression "(int **)(iVar8 + 0xf4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0xf4)" ( (binary_expression "iVar8 + 0xf4" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }" else (compound_statement "{\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }" { (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a6604);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a6604)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a6604)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a6604)" ( (binary_expression "unaff_EDI + 0x1a6604" identifier + number_literal) )))) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;" if (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad790;" goto statement_identifier ;)) (expression_statement "local_20 = (int *)FUN_001aa8c0();" (assignment_expression "local_20 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) comment (expression_statement "FUN_000e88d0(local_20,param_2,param_3,param_4);" (call_expression "FUN_000e88d0(local_20,param_2,param_3,param_4)" identifier (argument_list "(local_20,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_20[0x3a] = 0;" (assignment_expression "local_20[0x3a] = 0" (subscript_expression "local_20[0x3a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(local_20 + 0x3e) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x3e) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x3e)" * (cast_expression "(undefined1 *)(local_20 + 0x3e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x3e)" ( (binary_expression "local_20 + 0x3e" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*local_20 = unaff_EDI + 0x28de37;" (assignment_expression "*local_20 = unaff_EDI + 0x28de37" (pointer_expression "*local_20" * identifier) = (binary_expression "unaff_EDI + 0x28de37" identifier + number_literal)) ;) (expression_statement "local_20[0x3b] = 0;" (assignment_expression "local_20[0x3b] = 0" (subscript_expression "local_20[0x3b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int **)(param_1 + 0x1ac) = local_20;" (assignment_expression "*(int **)(param_1 + 0x1ac) = local_20" (pointer_expression "*(int **)(param_1 + 0x1ac)" * (cast_expression "(int **)(param_1 + 0x1ac)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x1a8);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x1a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x1a8)" * (cast_expression "(int *)(param_1 + 0x1a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a8)" ( (binary_expression "param_1 + 0x1a8" identifier + number_literal) ))))) ;) (expression_statement "local_20[0x3c] = 0;" (assignment_expression "local_20[0x3c] = 0" (subscript_expression "local_20[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;" (assignment_expression "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          local_20[0x3d] = iVar8;\n        }" { (expression_statement "local_20[0x3d] = iVar8;" (assignment_expression "local_20[0x3d] = iVar8" (subscript_expression "local_20[0x3d]" identifier [ number_literal ]) = identifier) ;) })) }))) }))) }) (else_clause "else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */\n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }" else (compound_statement "{\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */\n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }" { (expression_statement "iVar7 = 6;" (assignment_expression "iVar7 = 6" identifier = number_literal) ;) (expression_statement "pbVar11 = &DAT_0019de84 + unaff_EDI;" (assignment_expression "pbVar11 = &DAT_0019de84 + unaff_EDI" identifier = (binary_expression "&DAT_0019de84 + unaff_EDI" (pointer_expression "&DAT_0019de84" & identifier) + identifier)) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);" do (compound_statement "{\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    }" { (if_statement "if (iVar7 == 0) break;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;" if (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad742;" goto statement_identifier ;)) (expression_statement "local_20 = (int *)FUN_001aa8c0();" (assignment_expression "local_20 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) comment (expression_statement "FUN_000e88d0(local_20,param_2,param_3,param_4);" (call_expression "FUN_000e88d0(local_20,param_2,param_3,param_4)" identifier (argument_list "(local_20,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_20[0x3d] = 0;" (assignment_expression "local_20[0x3d] = 0" (subscript_expression "local_20[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(local_20 + 0x3e) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x3e) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x3e)" * (cast_expression "(undefined1 *)(local_20 + 0x3e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x3e)" ( (binary_expression "local_20 + 0x3e" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*local_20 = unaff_EDI + 0x28e307;" (assignment_expression "*local_20 = unaff_EDI + 0x28e307" (pointer_expression "*local_20" * identifier) = (binary_expression "unaff_EDI + 0x28e307" identifier + number_literal)) ;) (expression_statement "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;" (assignment_expression "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_20[0x3a] = iVar8;" (assignment_expression "local_20[0x3a] = iVar8" (subscript_expression "local_20[0x3a]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_20[0x3c] = (int)(local_20 + 0x3e);" (assignment_expression "local_20[0x3c] = (int)(local_20 + 0x3e)" (subscript_expression "local_20[0x3c]" identifier [ number_literal ]) = (cast_expression "(int)(local_20 + 0x3e)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_20 + 0x3e)" ( (binary_expression "local_20 + 0x3e" identifier + number_literal) )))) ;) }))) (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" * (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" ( (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }" { (if_statement "if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000adfbd;" goto statement_identifier ;)) (if_statement "if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;" if (parenthesized_expression "(((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0))" ( (binary_expression "((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)" (parenthesized_expression "((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0)" ( (binary_expression "(uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0" (parenthesized_expression "(uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9))" ( (binary_expression "uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" (binary_expression "uVar10 != 0" identifier != number_literal) & (pointer_expression "*(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" * (cast_expression "(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) + 0x56b9" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) ))))) )) == number_literal) )) || (parenthesized_expression "((param_4 & 1) == 0)" ( (binary_expression "(param_4 & 1) == 0" (parenthesized_expression "(param_4 & 1)" ( (binary_expression "param_4 & 1" identifier & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_000ad7d9;" goto statement_identifier ;)) (if_statement "if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = (param_4 & 0x400) == 0;" (assignment_expression "bVar15 = (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 (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }" { (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a4b74)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a4b74)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a4b74)" ( (binary_expression "unaff_EDI + 0x1a4b74" identifier + number_literal) )))) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }" { (expression_statement "iVar8 = 0x13;" (assignment_expression "iVar8 = 0x13" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7ba1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7ba1)" ( (binary_expression "unaff_EDI + 0x1a7ba1" identifier + number_literal) )))) ;) (do_statement "do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" do (compound_statement "{\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }" { (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af1 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" & identifier) + identifier)) ;) (do_statement "do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);" do (compound_statement "{\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar15 && !bVar13) == bVar15;" (assignment_expression "bVar13 = (!bVar15 && !bVar13) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }" { (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b10)" ( (binary_expression "unaff_EDI + 0x1a7b10" identifier + number_literal) )))) ;) (do_statement "do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);" do (compound_statement "{\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;" if (parenthesized_expression "(((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))" ( (binary_expression "((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0)" (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) && (parenthesized_expression "(iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0)" ( (comma_expression "iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0" (assignment_expression "iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI)" identifier = (call_expression "strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI)" identifier (argument_list "((char *)param_2,&DAT_001a7bb4 + unaff_EDI)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "&DAT_001a7bb4 + unaff_EDI" (pointer_expression "&DAT_001a7bb4" & identifier) + identifier) )))) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000ad7d9;" goto statement_identifier ;)) })) })) })) })) }) (else_clause "else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;" else (if_statement "if (2 < param_3 - 0xeU) goto LAB_000ad7d9;" 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_000ad7d9;" goto statement_identifier ;)))) (labeled_statement "LAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;" statement_identifier : (expression_statement "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;" (assignment_expression "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)local_20 + 0x91) | 0x20" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;)) }) (else_clause "else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }" else (compound_statement "{\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }" { (labeled_statement "LAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;" statement_identifier : (if_statement "if (param_7 != '\0') goto LAB_000ad7e3;" if (parenthesized_expression "(param_7 != '\0')" ( (binary_expression "param_7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000ad7e3;" goto statement_identifier ;))) }))) (if_statement "if ((param_6 == 0) && (uVar10 != 0)) {\n    param_6 = FUN_000a9050();\n  }" if (parenthesized_expression "((param_6 == 0) && (uVar10 != 0))" ( (binary_expression "(param_6 == 0) && (uVar10 != 0)" (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    param_6 = FUN_000a9050();\n  }" { (expression_statement "param_6 = FUN_000a9050();" (assignment_expression "param_6 = FUN_000a9050()" identifier = (call_expression "FUN_000a9050()" identifier (argument_list "()" ( )))) ;) })) (expression_statement "local_20[0x17] = param_6;" (assignment_expression "local_20[0x17] = param_6" (subscript_expression "local_20[0x17]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;" if (parenthesized_expression "(*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0)" ( (binary_expression "*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0" (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000ae083;" goto statement_identifier ;)) (expression_statement "pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);" (assignment_expression "pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" identifier = (pointer_expression "*(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" * (cast_expression "(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" ( (binary_expression "**(int **)(*(int *)pbVar1 + 0xc) + 0xc" (pointer_expression "**(int **)(*(int *)pbVar1 + 0xc)" * (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar3)();\n  }" if (parenthesized_expression "(pcVar3 != (code *)(unaff_EDI + -0x58979))" ( (binary_expression "pcVar3 != (code *)(unaff_EDI + -0x58979)" identifier != (cast_expression "(code *)(unaff_EDI + -0x58979)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x58979)" ( (binary_expression "unaff_EDI + -0x58979" identifier + number_literal) )))) )) (compound_statement "{\n    (*pcVar3)();\n  }" { (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "puVar4 = *(undefined4 **)(param_1 + 0x134);" (assignment_expression "puVar4 = *(undefined4 **)(param_1 + 0x134)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x134)" * (cast_expression "(undefined4 **)(param_1 + 0x134)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x134)" ( (binary_expression "param_1 + 0x134" identifier + number_literal) ))))) ;) (if_statement "if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {\n    FUN_000b7440();\n  }\n  else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }" if (parenthesized_expression "(puVar4 == *(undefined4 **)(param_1 + 0x138))" ( (binary_expression "puVar4 == *(undefined4 **)(param_1 + 0x138)" identifier == (pointer_expression "*(undefined4 **)(param_1 + 0x138)" * (cast_expression "(undefined4 **)(param_1 + 0x138)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x138)" ( (binary_expression "param_1 + 0x138" identifier + number_literal) ))))) )) (compound_statement "{\n    FUN_000b7440();\n  }" { (expression_statement "FUN_000b7440();" (call_expression "FUN_000b7440()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }" else (compound_statement "{\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }" { (expression_statement "*puVar4 = local_20;" (assignment_expression "*puVar4 = local_20" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "*(undefined4 **)(param_1 + 0x134) = puVar4 + 1;" (assignment_expression "*(undefined4 **)(param_1 + 0x134) = puVar4 + 1" (pointer_expression "*(undefined4 **)(param_1 + 0x134)" * (cast_expression "(undefined4 **)(param_1 + 0x134)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x134)" ( (binary_expression "param_1 + 0x134" identifier + number_literal) )))) = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }))) (expression_statement "iVar8 = *(int *)(param_1 + 4);" (assignment_expression "iVar8 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar7 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar8 + 0xac) == '\0') {\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }" if (parenthesized_expression "(*(char *)(iVar8 + 0xac) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar8 + 0xac)" * (cast_expression "(char *)(iVar8 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xac)" ( (binary_expression "iVar8 + 0xac" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }" { (if_statement "if (iVar7 == 0) {\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }" { (labeled_statement "LAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();" statement_identifier : comment (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = *(char *)(iVar7 + 0x318d) == '\0';" (assignment_expression "bVar15 = *(char *)(iVar7 + 0x318d) == '\0'" identifier = (binary_expression "*(char *)(iVar7 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x318d)" * (cast_expression "(char *)(iVar7 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x318d)" ( (binary_expression "iVar7 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar15) goto LAB_000ad8b2;" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (goto_statement "goto LAB_000ad8b2;" goto statement_identifier ;)) (expression_statement "iVar9 = 0xc;" (assignment_expression "iVar9 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_001a7af8 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af8 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af8 + unaff_EDI" (pointer_expression "&DAT_001a7af8" & identifier) + identifier)) ;) (do_statement "do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);" do (compound_statement "{\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    }" { (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }" { (labeled_statement "LAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;" statement_identifier : (expression_statement "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;" (assignment_expression "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)local_20 + 0x91) | 4" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;)) }) (else_clause "else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" else (compound_statement "{\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" { (expression_statement "iVar9 = 0xc;" (assignment_expression "iVar9 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b04)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b04)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b04)" ( (binary_expression "unaff_EDI + 0x1a7b04" identifier + number_literal) )))) ;) (do_statement "do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);" do (compound_statement "{\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" { (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;" if (parenthesized_expression "((!bVar14 && !bVar13) == bVar14)" ( (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_000ad8a8;" goto statement_identifier ;)) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = *(char *)(iVar7 + 0xad5) == '\0';" (assignment_expression "bVar15 = *(char *)(iVar7 + 0xad5) == '\0'" identifier = (binary_expression "*(char *)(iVar7 + 0xad5) == '\0'" (pointer_expression "*(char *)(iVar7 + 0xad5)" * (cast_expression "(char *)(iVar7 + 0xad5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xad5)" ( (binary_expression "iVar7 + 0xad5" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }" { (expression_statement "iVar9 = 7;" (assignment_expression "iVar9 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af1 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" & identifier) + identifier)) ;) (do_statement "do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }" { (expression_statement "iVar9 = 7;" (assignment_expression "iVar9 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b10)" ( (binary_expression "unaff_EDI + 0x1a7b10" identifier + number_literal) )))) ;) (do_statement "do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" do (compound_statement "{\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" { (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;" if (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad8b2;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000ad8a8;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';" statement_identifier : (expression_statement "bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';" (assignment_expression "bVar13 = *(char *)(iVar7 + 0x3ced) == '\0'" identifier = (binary_expression "*(char *)(iVar7 + 0x3ced) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x3ced)" * (cast_expression "(char *)(iVar7 + 0x3ced)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x3ced)" ( (binary_expression "iVar7 + 0x3ced" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;)) (if_statement "if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }" if (parenthesized_expression "(((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13))" ( (binary_expression "((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)" (parenthesized_expression "((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13))" ( (binary_expression "(!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)" (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) && (parenthesized_expression "(bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)" ( (comma_expression "bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13" (assignment_expression "bVar13 = *(char *)(iVar8 + 0xac) == '\0'" identifier = (binary_expression "*(char *)(iVar8 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar8 + 0xac)" * (cast_expression "(char *)(iVar8 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xac)" ( (binary_expression "iVar8 + 0xac" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) , identifier) ))) )) && (parenthesized_expression "(bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)" ( (comma_expression "bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13" (assignment_expression "bVar13 = *(char *)(param_1 + 0x1cd) == '\0'" identifier = (binary_expression "*(char *)(param_1 + 0x1cd) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1cd)" * (cast_expression "(char *)(param_1 + 0x1cd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1cd)" ( (binary_expression "param_1 + 0x1cd" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) , identifier) ))) )) (compound_statement "{\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }" { (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar13 = *(char *)(iVar7 + 0x318d) == '\0';" (assignment_expression "bVar13 = *(char *)(iVar7 + 0x318d) == '\0'" identifier = (binary_expression "*(char *)(iVar7 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x318d)" * (cast_expression "(char *)(iVar7 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x318d)" ( (binary_expression "iVar7 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }" { (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_0019defb + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_0019defb + unaff_EDI" identifier = (binary_expression "&DAT_0019defb + unaff_EDI" (pointer_expression "&DAT_0019defb" & identifier) + identifier)) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar13 = (!bVar15 && !bVar13) == bVar15;" (assignment_expression "bVar13 = (!bVar15 && !bVar13) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }" { (expression_statement "pbVar11 = (byte *)((int)local_20 + 0x91);" (assignment_expression "pbVar11 = (byte *)((int)local_20 + 0x91)" identifier = (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*pbVar11 = *pbVar11 | 4;" (assignment_expression "*pbVar11 = *pbVar11 | 4" (pointer_expression "*pbVar11" * identifier) = (binary_expression "*pbVar11 | 4" (pointer_expression "*pbVar11" * identifier) | number_literal)) ;) (expression_statement "bVar13 = *pbVar11 == 0;" (assignment_expression "bVar13 = *pbVar11 == 0" identifier = (binary_expression "*pbVar11 == 0" (pointer_expression "*pbVar11" * identifier) == number_literal)) ;) })) })) })) }) (else_clause "else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }" else (compound_statement "{\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }" { (expression_statement "bVar13 = iVar7 == 0;" (assignment_expression "bVar13 = iVar7 == 0" identifier = (binary_expression "iVar7 == 0" identifier == number_literal)) ;) (if_statement "if (bVar13) goto LAB_000adfbd;" if (parenthesized_expression "(bVar13)" ( identifier )) (goto_statement "goto LAB_000adfbd;" goto statement_identifier ;)) }))) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "iVar8 = 5;" (assignment_expression "iVar8 = 5" identifier = number_literal) ;) (expression_statement "pbVar11 = *(byte **)(iVar7 + 0x3820);" (assignment_expression "pbVar11 = *(byte **)(iVar7 + 0x3820)" identifier = (pointer_expression "*(byte **)(iVar7 + 0x3820)" * (cast_expression "(byte **)(iVar7 + 0x3820)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x3820)" ( (binary_expression "iVar7 + 0x3820" identifier + number_literal) ))))) ;) (expression_statement "pbVar12 = &DAT_001ab0cb + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001ab0cb + unaff_EDI" identifier = (binary_expression "&DAT_001ab0cb + unaff_EDI" (pointer_expression "&DAT_001ab0cb" & identifier) + identifier)) ;) (do_statement "do {\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar13);" do (compound_statement "{\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar13) == bVar15) {\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }" if (parenthesized_expression "((!bVar15 && !bVar13) == bVar15)" ( (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (compound_statement "{\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }" { (expression_statement "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;" (assignment_expression "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)local_20 + 0x91) | 8" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) (if_statement "if (param_3 == 3) {\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(param_3 == 3)" ( (binary_expression "param_3 == 3" identifier == number_literal) )) (compound_statement "{\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }" { (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = *(char *)(param_1 + 0x1cc) == '\0';" (assignment_expression "bVar15 = *(char *)(param_1 + 0x1cc) == '\0'" identifier = (binary_expression "*(char *)(param_1 + 0x1cc) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1cc)" * (cast_expression "(char *)(param_1 + 0x1cc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1cc)" ( (binary_expression "param_1 + 0x1cc" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }" { (expression_statement "iVar8 = 5;" (assignment_expression "iVar8 = 5" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_0019deab + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_0019deab + unaff_EDI" identifier = (binary_expression "&DAT_0019deab + unaff_EDI" (pointer_expression "&DAT_0019deab" & identifier) + identifier)) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }" if (parenthesized_expression "((!bVar13 && !bVar15) == bVar13)" ( (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }" { (expression_statement "sVar6 = strlen((char *)param_2);" (assignment_expression "sVar6 = 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 "bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;" (assignment_expression "bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4" identifier = (binary_expression "(undefined1 *)0xffffffef < &stack0xffffffa4" (cast_expression "(undefined1 *)0xffffffef" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < (pointer_expression "&stack0xffffffa4" & identifier))) ;) (expression_statement "bVar15 = &stack0x00000000 == (undefined1 *)0x4c;" (assignment_expression "bVar15 = &stack0x00000000 == (undefined1 *)0x4c" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0x4c" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0x4c" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "iVar8 = 4;" (assignment_expression "iVar8 = 4" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2 + (sVar6 - 3);" (assignment_expression "pbVar11 = param_2 + (sVar6 - 3)" identifier = (binary_expression "param_2 + (sVar6 - 3)" identifier + (parenthesized_expression "(sVar6 - 3)" ( (binary_expression "sVar6 - 3" identifier - number_literal) )))) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1af75d);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1af75d)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1af75d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af75d)" ( (binary_expression "unaff_EDI + 0x1af75d" identifier + number_literal) )))) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }" if (parenthesized_expression "((!bVar13 && !bVar15) == bVar13)" ( (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }" { (expression_statement "*(undefined1 *)(param_1 + 0x1cc) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x1cc) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x1cc)" * (cast_expression "(undefined1 *)(param_1 + 0x1cc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1cc)" ( (binary_expression "param_1 + 0x1cc" identifier + number_literal) )))) = number_literal) ;) })) })) })) }) (else_clause "else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }" else (if_statement "if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 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    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "bVar13 = param_6 < 0x15;" (assignment_expression "bVar13 = param_6 < 0x15" identifier = (binary_expression "param_6 < 0x15" identifier < number_literal)) ;) (expression_statement "bVar15 = param_6 == 0x15;" (assignment_expression "bVar15 = param_6 == 0x15" identifier = (binary_expression "param_6 == 0x15" identifier == number_literal)) ;) (if_statement "if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13))" ( (binary_expression "(0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)" (parenthesized_expression "(0x15 < param_6)" ( (binary_expression "0x15 < param_6" number_literal < identifier) )) || (parenthesized_expression "(bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)" ( (comma_expression "bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13" (assignment_expression "bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0" identifier = (binary_expression "(0x3020c2U >> (param_6 & 0x1f) & 1) != 0" (parenthesized_expression "(0x3020c2U >> (param_6 & 0x1f) & 1)" ( (binary_expression "0x3020c2U >> (param_6 & 0x1f) & 1" (binary_expression "0x3020c2U >> (param_6 & 0x1f)" number_literal >> (parenthesized_expression "(param_6 & 0x1f)" ( (binary_expression "param_6 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal)) , (unary_expression "!bVar13" ! identifier)) ))) )) (compound_statement "{\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "iVar8 = 10;" (assignment_expression "iVar8 = 10" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a0735);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a0735)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a0735)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a0735)" ( (binary_expression "unaff_EDI + 0x1a0735" identifier + number_literal) )))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }" { (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af1 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" & identifier) + identifier)) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }" { (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b10)" ( (binary_expression "unaff_EDI + 0x1a7b10" identifier + number_literal) )))) ;) (do_statement "do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" do (compound_statement "{\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar15 && !bVar13) == bVar15;" (assignment_expression "bVar13 = (!bVar15 && !bVar13) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }" { (expression_statement "iVar8 = 5;" (assignment_expression "iVar8 = 5" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_001a7bb4 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7bb4 + unaff_EDI" identifier = (binary_expression "&DAT_001a7bb4 + unaff_EDI" (pointer_expression "&DAT_001a7bb4" & identifier) + identifier)) ;) (do_statement "do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);" do (compound_statement "{\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }" if (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (compound_statement "{\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }" { (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)((int)local_20 + 0x92);" (assignment_expression "pbVar11 = (byte *)((int)local_20 + 0x92)" identifier = (cast_expression "(byte *)((int)local_20 + 0x92)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x92)" ( (binary_expression "(int)local_20 + 0x92" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "*pbVar11 = *pbVar11 | 0x40;" (assignment_expression "*pbVar11 = *pbVar11 | 0x40" (pointer_expression "*pbVar11" * identifier) = (binary_expression "*pbVar11 | 0x40" (pointer_expression "*pbVar11" * identifier) | number_literal)) ;) (expression_statement "bVar15 = *pbVar11 == 0;" (assignment_expression "bVar15 = *pbVar11 == 0" identifier = (binary_expression "*pbVar11 == 0" (pointer_expression "*pbVar11" * identifier) == number_literal)) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a6604);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a6604)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a6604)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a6604)" ( (binary_expression "unaff_EDI + 0x1a6604" identifier + number_literal) )))) ;) (do_statement "do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);" do (compound_statement "{\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }" { (expression_statement "piVar5 = (int *)FUN_001aa8c0();" (assignment_expression "piVar5 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar5 = unaff_EDI + 0x28d063;" (assignment_expression "*piVar5 = unaff_EDI + 0x28d063" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x28d063" identifier + number_literal)) ;) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  FUN_0008b620();\n                }" { comment comment (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);" (assignment_expression "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" identifier = (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)piVar5 + 5) = 0;" (assignment_expression "*(undefined1 *)((int)piVar5 + 5) = 0" (pointer_expression "*(undefined1 *)((int)piVar5 + 5)" * (cast_expression "(undefined1 *)((int)piVar5 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 5)" ( (binary_expression "(int)piVar5 + 5" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(piVar5 + 1) = uVar2;" (assignment_expression "*(undefined1 *)(piVar5 + 1) = uVar2" (pointer_expression "*(undefined1 *)(piVar5 + 1)" * (cast_expression "(undefined1 *)(piVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 1)" ( (binary_expression "piVar5 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "*piVar5 = unaff_EDI + 0x286dc7;" (assignment_expression "*piVar5 = unaff_EDI + 0x286dc7" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x286dc7" identifier + number_literal)) ;) (labeled_statement "LAB_000ae026:\n                local_20[0x36] = (int)piVar5;" statement_identifier : (expression_statement "local_20[0x36] = (int)piVar5;" (assignment_expression "local_20[0x36] = (int)piVar5" (subscript_expression "local_20[0x36]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "iVar8 = FUN_000e6d80();" (assignment_expression "iVar8 = FUN_000e6d80()" identifier = (call_expression "FUN_000e6d80()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }" else (compound_statement "{\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }" { (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a6610);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a6610)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a6610)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a6610)" ( (binary_expression "unaff_EDI + 0x1a6610" identifier + number_literal) )))) ;) (do_statement "do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);" do (compound_statement "{\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }" { (expression_statement "piVar5 = (int *)FUN_001aa8c0();" (assignment_expression "piVar5 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar5 = unaff_EDI + 0x28d063;" (assignment_expression "*piVar5 = unaff_EDI + 0x28d063" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x28d063" identifier + number_literal)) ;) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    FUN_0008b620();\n                  }" { comment comment (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);" (assignment_expression "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" identifier = (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)piVar5 + 5) = 1;" (assignment_expression "*(undefined1 *)((int)piVar5 + 5) = 1" (pointer_expression "*(undefined1 *)((int)piVar5 + 5)" * (cast_expression "(undefined1 *)((int)piVar5 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 5)" ( (binary_expression "(int)piVar5 + 5" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(piVar5 + 1) = uVar2;" (assignment_expression "*(undefined1 *)(piVar5 + 1) = uVar2" (pointer_expression "*(undefined1 *)(piVar5 + 1)" * (cast_expression "(undefined1 *)(piVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 1)" ( (binary_expression "piVar5 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "*piVar5 = unaff_EDI + 0x286dc7;" (assignment_expression "*piVar5 = unaff_EDI + 0x286dc7" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x286dc7" identifier + number_literal)) ;) (goto_statement "goto LAB_000ae026;" goto statement_identifier ;) })) (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7bb9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7bb9)" ( (binary_expression "unaff_EDI + 0x1a7bb9" identifier + number_literal) )))) ;) (do_statement "do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);" do (compound_statement "{\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *param_2 < *pbVar11;" (assignment_expression "bVar15 = *param_2 < *pbVar11" identifier = (binary_expression "*param_2 < *pbVar11" (pointer_expression "*param_2" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar13 = *param_2 == *pbVar11;" (assignment_expression "bVar13 = *param_2 == *pbVar11" identifier = (binary_expression "*param_2 == *pbVar11" (pointer_expression "*param_2" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "param_2 = param_2 + (uint)bVar16 * -2 + 1;" (assignment_expression "param_2 = param_2 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "param_2 + (uint)bVar16 * -2 + 1" (binary_expression "param_2 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;" if (parenthesized_expression "((!bVar15 && !bVar13) != bVar15)" ( (binary_expression "(!bVar15 && !bVar13) != bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad932;" goto statement_identifier ;)) (expression_statement "piVar5 = (int *)FUN_001aa8c0();" (assignment_expression "piVar5 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar5 = unaff_EDI + 0x28d063;" (assignment_expression "*piVar5 = unaff_EDI + 0x28d063" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x28d063" identifier + number_literal)) ;) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  FUN_0008b620();\n                }" { comment comment (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);" (assignment_expression "*(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (pointer_expression "*(undefined1 *)(piVar5 + 1)" * (cast_expression "(undefined1 *)(piVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 1)" ( (binary_expression "piVar5 + 1" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*piVar5 = unaff_EDI + 0x286ddf;" (assignment_expression "*piVar5 = unaff_EDI + 0x286ddf" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x286ddf" identifier + number_literal)) ;) (expression_statement "local_20[0x36] = (int)piVar5;" (assignment_expression "local_20[0x36] = (int)piVar5" (subscript_expression "local_20[0x36]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar8 = FUN_000e6da0();" (assignment_expression "iVar8 = FUN_000e6da0()" identifier = (call_expression "FUN_000e6da0()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "local_20[0x34] = iVar8;" (assignment_expression "local_20[0x34] = iVar8" (subscript_expression "local_20[0x34]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_20[0x35] = 0;" (assignment_expression "local_20[0x35] = 0" (subscript_expression "local_20[0x35]" identifier [ number_literal ]) = number_literal) ;) })) })) })) })) })) })))) (labeled_statement "LAB_000ad932:\n  if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x1c5) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x1c5) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1c5)" * (cast_expression "(char *)(param_1 + 0x1c5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c5)" ( (binary_expression "param_1 + 0x1c5" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }" { (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();\n    }" { (labeled_statement "LAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620();" statement_identifier : comment (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "FUN_000ad5f0();" (call_expression "FUN_000ad5f0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_20;" return identifier ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* 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  byte *pbVar1;\n  undefined1 *puVar2;\n  _Rb_tree_header *p_Var3;\n  _func_int_varargs **pp_Var4;\n  int *piVar5;\n  code *pcVar6;\n  iterator __position;\n  Script_options *pSVar7;\n  Elf_Word EVar8;\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  int iVar15;\n  int iVar16;\n  _func_int_varargs *p_Var17;\n  byte *pbVar18;\n  int unaff_EDI;\n  byte *pbVar19;\n  bool bVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  bool local_49;\n  Output_section *local_38;\n  Output_section *os;\n  \n  bVar24 = 0;\n  __x86_get_pc_thunk_di();\n  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;\n  if ((flags & 2) != 0) goto LAB_000ad790;\n  pp_Var4 = *(_func_int_varargs ***)(*(int *)pbVar1 + 8);\n  bVar20 = false;\n  bVar23 = pp_Var4 == (_func_int_varargs **)0x0;\n  if (bVar23) goto LAB_000adfbd;\n  iVar15 = 5;\n  p_Var17 = pp_Var4[0x267];\n  pbVar18 = (byte *)(unaff_EDI + 0x1ab8b3);\n  do {\n    if (iVar15 == 0) break;\n    iVar15 = iVar15 + -1;\n    bVar20 = (byte)*p_Var17 < *pbVar18;\n    bVar23 = *p_Var17 == (_func_int_varargs)*pbVar18;\n    p_Var17 = p_Var17 + (uint)bVar24 * -2 + 1;\n    pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n  } while (bVar23);\n  bVar21 = false;\n  bVar20 = (!bVar20 && !bVar23) == bVar20;\n  if (bVar20) {\nLAB_000ad742:\n    bVar20 = false;\n    bVar23 = *(char *)((int)pp_Var4 + 0x3561) == '\0';\n    if (bVar23) {\nLAB_000ad790:\n      bVar20 = type == 0;\n      bVar23 = type == 1;\n      EVar8 = type;\n      if (bVar23) {\n        iVar15 = 0xb;\n        pbVar18 = &DAT_001a7af8 + unaff_EDI;\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (bVar20) {\n          type = 0xe;\n          EVar8 = type;\n        }\n        else {\n          iVar15 = 0xe;\n          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar19 = (byte *)name;\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar23 = false;\n          bVar20 = (!bVar21 && !bVar20) == bVar21;\n          if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }\n        }\n      }\n      type = EVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      os = (Output_section *)(**(code **)(*piVar5 + 100))(piVar5,name,type,(undefined4)flags);\n    }\n    else {\n      iVar15 = 0xe;\n      pbVar18 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar19 = (byte *)name;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (bVar20) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x118);\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\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->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28dddb);\n        p_Var3 = &(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_Var3->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var3->_M_header;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        this->debug_abbrev_ = pOVar13;\n        pOVar14 = this->debug_info_;\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        puVar2 = &(pOVar13->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        iVar15 = 0xc;\n        pbVar18 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        pOVar14->failed_ = false;\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        this->debug_info_ = pOVar14;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        puVar2 = &(pOVar14->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\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    iVar15 = 6;\n    pbVar18 = &DAT_0019de84 + unaff_EDI;\n    pbVar19 = (byte *)name;\n    do {\n      if (iVar15 == 0) break;\n      iVar15 = iVar15 + -1;\n      bVar21 = *pbVar18 < *pbVar19;\n      bVar20 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    } while (bVar20);\n    if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad742;\n    pOVar12 = (Output_section *)operator_new(0x108);\n                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */\n    Output_section::Output_section(pOVar12,name,type,flags);\n    *(undefined4 *)&pOVar12[1].super_Output_data.data_size_ = 0;\n    *(undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4) = 0;\n    (pOVar12->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x28e307);\n    pOVar12->field_0x90 = pOVar12->field_0x90 | 0x30;\n    pOVar12[1].super_Output_data._vptr_Output_data = pp_Var4;\n    *(undefined1 **)((int)&pOVar12[1].super_Output_data.address_ + 4) =\n         (undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4);\n    os = pOVar12;\n  }\n  local_38 = os;\n  local_49 = is_relro;\n  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    bVar20 = (bool)((flags & 2) != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9));\n    if ((bVar20 == false) || ((flags & 1) == 0)) goto LAB_000ad7d9;\n    if (type == 1) {\n      bVar23 = false;\n      bVar21 = (flags & 0x400) == 0;\n      if (!bVar21) goto LAB_000ad7df;\n      iVar15 = 0xd;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a4b74);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar23 = *pbVar18 < *pbVar19;\n        bVar21 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      bVar22 = false;\n      bVar23 = (!bVar23 && !bVar21) == bVar23;\n      if (bVar23) goto LAB_000ad7df;\n      iVar15 = 0x13;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7ba1);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar22 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar23 = (!bVar22 && !bVar23) == bVar22;\n      if (!bVar23) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar20 = false;\n        bVar23 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar23) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if (((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;\n        }\n        goto LAB_000ad7df;\n      }\n    }\n    else {\n      if (2 < type - 0xe) goto LAB_000ad7d9;\nLAB_000ad7df:\n      local_49 = false;\n      bVar20 = local_49;\n    }\n    local_49 = bVar20;\n    local_38->field_0x91 = local_38->field_0x91 | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (is_relro) goto LAB_000ad7df;\n  }\n  if ((order == ORDER_INVALID) && ((flags & 2) != 0)) {\n    order = default_section_order(this,local_38,local_49);\n    local_38 = os;\n  }\n  local_38->order_ = order;\n  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;\n  pcVar6 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);\n  if (pcVar6 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar6)();\n  }\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) {\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  else {\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  pOVar12 = os;\n  pSVar7 = this->script_options_;\n  iVar15 = *(int *)(*(int *)pbVar1 + 8);\n  if ((pSVar7->script_sections_).saw_sections_clause_ == false) {\n    if (iVar15 == 0) {\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x5c,(char *)(unaff_EDI + 0x1a8e6f));\n    }\n    bVar20 = false;\n    bVar23 = *(char *)(iVar15 + 0x318d) == '\0';\n    if (!bVar23) goto LAB_000ad8b2;\n    iVar16 = 0xc;\n    pbVar18 = (byte *)name;\n    pbVar19 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar16 == 0) break;\n      iVar16 = iVar16 + -1;\n      bVar20 = *pbVar18 < *pbVar19;\n      bVar23 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    } while (bVar23);\n    bVar21 = false;\n    bVar20 = (!bVar20 && !bVar23) == bVar20;\n    if (bVar20) {\nLAB_000ad8a8:\n      os->field_0x91 = os->field_0x91 | 4;\n    }\n    else {\n      iVar16 = 0xc;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar16 == 0) break;\n        iVar16 = iVar16 + -1;\n        bVar21 = *pbVar18 < *pbVar19;\n        bVar20 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar20);\n      if ((!bVar21 && !bVar20) == bVar21) goto LAB_000ad8a8;\n      bVar20 = false;\n      bVar23 = *(char *)(iVar15 + 0xad5) == '\0';\n      if (bVar23) {\n        iVar16 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (!bVar20) {\n          iVar16 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar20 = *(char *)(iVar15 + 0x3ced) == '\0';\n    if (((!bVar20) && (bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20))\n       && (bVar20 = this->section_ordering_specified_ == false, bVar20)) {\n      bVar23 = false;\n      bVar20 = *(char *)(iVar15 + 0x318d) == '\0';\n      if (bVar20) {\n        iVar16 = 6;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar23 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar20 = (!bVar23 && !bVar20) == bVar23;\n        if (bVar20) {\n          puVar2 = &os->field_0x91;\n          *puVar2 = *puVar2 | 4;\n          bVar20 = *puVar2 == '\0';\n        }\n      }\n    }\n  }\n  else {\n    bVar20 = iVar15 == 0;\n    if (bVar20) goto LAB_000adfbd;\n  }\n  local_38 = os;\n  bVar23 = false;\n  iVar16 = 5;\n  pbVar18 = *(byte **)(iVar15 + 0x3820);\n  pbVar19 = &DAT_001ab0cb + unaff_EDI;\n  do {\n    if (iVar16 == 0) break;\n    iVar16 = iVar16 + -1;\n    bVar23 = *pbVar18 < *pbVar19;\n    bVar20 = *pbVar18 == *pbVar19;\n    pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n    pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n  } while (bVar20);\n  if ((!bVar23 && !bVar20) == bVar23) {\n    os->field_0x91 = os->field_0x91 | 8;\n  }\n  if (type == 3) {\n    bVar20 = false;\n    bVar23 = this->have_stabstr_section_ == false;\n    if (bVar23) {\n      iVar15 = 5;\n      pbVar18 = (byte *)name;\n      pbVar19 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      if ((!bVar20 && !bVar23) == bVar20) {\n        sVar11 = strlen(name);\n        bVar20 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar23 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar15 = 4;\n        pbVar18 = (byte *)(name + (sVar11 - 3));\n        pbVar19 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        if ((!bVar20 && !bVar23) == bVar20) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }\n  }\n  else if ((type == 1) || (type == 8)) {\n    bVar20 = order < ORDER_NON_RELRO_FIRST;\n    bVar23 = order == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < order) ||\n       (bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20))\n    {\n      iVar15 = 10;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (!bVar20) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar23 = false;\n        bVar20 = (!bVar21 && !bVar20) == bVar21;\n        if (!bVar20) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_000ad932:\n  if (this->sections_are_attached_ != false) {\n    if (*(Target **)(*(int *)pbVar1 + 0xc) == (Target *)0x0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f));\n    }\n    attach_section_to_segment(this,*(Target **)(*(int *)pbVar1 + 0xc),local_38);\n    local_38 = os;\n  }\n  return local_38;\n}\n\n" comment 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  byte *pbVar1;\n  undefined1 *puVar2;\n  _Rb_tree_header *p_Var3;\n  _func_int_varargs **pp_Var4;\n  int *piVar5;\n  code *pcVar6;\n  iterator __position;\n  Script_options *pSVar7;\n  Elf_Word EVar8;\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  int iVar15;\n  int iVar16;\n  _func_int_varargs *p_Var17;\n  byte *pbVar18;\n  int unaff_EDI;\n  byte *pbVar19;\n  bool bVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  bool local_49;\n  Output_section *local_38;\n  Output_section *os;\n  \n  bVar24 = 0;\n  __x86_get_pc_thunk_di();\n  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;\n  if ((flags & 2) != 0) goto LAB_000ad790;\n  pp_Var4 = *(_func_int_varargs ***)(*(int *)pbVar1 + 8);\n  bVar20 = false;\n  bVar23 = pp_Var4 == (_func_int_varargs **)0x0;\n  if (bVar23) goto LAB_000adfbd;\n  iVar15 = 5;\n  p_Var17 = pp_Var4[0x267];\n  pbVar18 = (byte *)(unaff_EDI + 0x1ab8b3);\n  do {\n    if (iVar15 == 0) break;\n    iVar15 = iVar15 + -1;\n    bVar20 = (byte)*p_Var17 < *pbVar18;\n    bVar23 = *p_Var17 == (_func_int_varargs)*pbVar18;\n    p_Var17 = p_Var17 + (uint)bVar24 * -2 + 1;\n    pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n  } while (bVar23);\n  bVar21 = false;\n  bVar20 = (!bVar20 && !bVar23) == bVar20;\n  if (bVar20) {\nLAB_000ad742:\n    bVar20 = false;\n    bVar23 = *(char *)((int)pp_Var4 + 0x3561) == '\0';\n    if (bVar23) {\nLAB_000ad790:\n      bVar20 = type == 0;\n      bVar23 = type == 1;\n      EVar8 = type;\n      if (bVar23) {\n        iVar15 = 0xb;\n        pbVar18 = &DAT_001a7af8 + unaff_EDI;\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (bVar20) {\n          type = 0xe;\n          EVar8 = type;\n        }\n        else {\n          iVar15 = 0xe;\n          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar19 = (byte *)name;\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar23 = false;\n          bVar20 = (!bVar21 && !bVar20) == bVar21;\n          if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }\n        }\n      }\n      type = EVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      os = (Output_section *)(**(code **)(*piVar5 + 100))(piVar5,name,type,(undefined4)flags);\n    }\n    else {\n      iVar15 = 0xe;\n      pbVar18 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar19 = (byte *)name;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (bVar20) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x118);\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\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->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28dddb);\n        p_Var3 = &(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_Var3->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var3->_M_header;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        this->debug_abbrev_ = pOVar13;\n        pOVar14 = this->debug_info_;\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        puVar2 = &(pOVar13->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        iVar15 = 0xc;\n        pbVar18 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        pOVar14->failed_ = false;\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        this->debug_info_ = pOVar14;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        puVar2 = &(pOVar14->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\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    iVar15 = 6;\n    pbVar18 = &DAT_0019de84 + unaff_EDI;\n    pbVar19 = (byte *)name;\n    do {\n      if (iVar15 == 0) break;\n      iVar15 = iVar15 + -1;\n      bVar21 = *pbVar18 < *pbVar19;\n      bVar20 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    } while (bVar20);\n    if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad742;\n    pOVar12 = (Output_section *)operator_new(0x108);\n                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */\n    Output_section::Output_section(pOVar12,name,type,flags);\n    *(undefined4 *)&pOVar12[1].super_Output_data.data_size_ = 0;\n    *(undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4) = 0;\n    (pOVar12->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x28e307);\n    pOVar12->field_0x90 = pOVar12->field_0x90 | 0x30;\n    pOVar12[1].super_Output_data._vptr_Output_data = pp_Var4;\n    *(undefined1 **)((int)&pOVar12[1].super_Output_data.address_ + 4) =\n         (undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4);\n    os = pOVar12;\n  }\n  local_38 = os;\n  local_49 = is_relro;\n  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    bVar20 = (bool)((flags & 2) != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9));\n    if ((bVar20 == false) || ((flags & 1) == 0)) goto LAB_000ad7d9;\n    if (type == 1) {\n      bVar23 = false;\n      bVar21 = (flags & 0x400) == 0;\n      if (!bVar21) goto LAB_000ad7df;\n      iVar15 = 0xd;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a4b74);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar23 = *pbVar18 < *pbVar19;\n        bVar21 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      bVar22 = false;\n      bVar23 = (!bVar23 && !bVar21) == bVar23;\n      if (bVar23) goto LAB_000ad7df;\n      iVar15 = 0x13;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7ba1);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar22 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar23 = (!bVar22 && !bVar23) == bVar22;\n      if (!bVar23) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar20 = false;\n        bVar23 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar23) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if (((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;\n        }\n        goto LAB_000ad7df;\n      }\n    }\n    else {\n      if (2 < type - 0xe) goto LAB_000ad7d9;\nLAB_000ad7df:\n      local_49 = false;\n      bVar20 = local_49;\n    }\n    local_49 = bVar20;\n    local_38->field_0x91 = local_38->field_0x91 | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (is_relro) goto LAB_000ad7df;\n  }\n  if ((order == ORDER_INVALID) && ((flags & 2) != 0)) {\n    order = default_section_order(this,local_38,local_49);\n    local_38 = os;\n  }\n  local_38->order_ = order;\n  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;\n  pcVar6 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);\n  if (pcVar6 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar6)();\n  }\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) {\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  else {\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  pOVar12 = os;\n  pSVar7 = this->script_options_;\n  iVar15 = *(int *)(*(int *)pbVar1 + 8);\n  if ((pSVar7->script_sections_).saw_sections_clause_ == false) {\n    if (iVar15 == 0) {\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x5c,(char *)(unaff_EDI + 0x1a8e6f));\n    }\n    bVar20 = false;\n    bVar23 = *(char *)(iVar15 + 0x318d) == '\0';\n    if (!bVar23) goto LAB_000ad8b2;\n    iVar16 = 0xc;\n    pbVar18 = (byte *)name;\n    pbVar19 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar16 == 0) break;\n      iVar16 = iVar16 + -1;\n      bVar20 = *pbVar18 < *pbVar19;\n      bVar23 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    } while (bVar23);\n    bVar21 = false;\n    bVar20 = (!bVar20 && !bVar23) == bVar20;\n    if (bVar20) {\nLAB_000ad8a8:\n      os->field_0x91 = os->field_0x91 | 4;\n    }\n    else {\n      iVar16 = 0xc;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar16 == 0) break;\n        iVar16 = iVar16 + -1;\n        bVar21 = *pbVar18 < *pbVar19;\n        bVar20 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar20);\n      if ((!bVar21 && !bVar20) == bVar21) goto LAB_000ad8a8;\n      bVar20 = false;\n      bVar23 = *(char *)(iVar15 + 0xad5) == '\0';\n      if (bVar23) {\n        iVar16 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (!bVar20) {\n          iVar16 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar20 = *(char *)(iVar15 + 0x3ced) == '\0';\n    if (((!bVar20) && (bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20))\n       && (bVar20 = this->section_ordering_specified_ == false, bVar20)) {\n      bVar23 = false;\n      bVar20 = *(char *)(iVar15 + 0x318d) == '\0';\n      if (bVar20) {\n        iVar16 = 6;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar23 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar20 = (!bVar23 && !bVar20) == bVar23;\n        if (bVar20) {\n          puVar2 = &os->field_0x91;\n          *puVar2 = *puVar2 | 4;\n          bVar20 = *puVar2 == '\0';\n        }\n      }\n    }\n  }\n  else {\n    bVar20 = iVar15 == 0;\n    if (bVar20) goto LAB_000adfbd;\n  }\n  local_38 = os;\n  bVar23 = false;\n  iVar16 = 5;\n  pbVar18 = *(byte **)(iVar15 + 0x3820);\n  pbVar19 = &DAT_001ab0cb + unaff_EDI;\n  do {\n    if (iVar16 == 0) break;\n    iVar16 = iVar16 + -1;\n    bVar23 = *pbVar18 < *pbVar19;\n    bVar20 = *pbVar18 == *pbVar19;\n    pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n    pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n  } while (bVar20);\n  if ((!bVar23 && !bVar20) == bVar23) {\n    os->field_0x91 = os->field_0x91 | 8;\n  }\n  if (type == 3) {\n    bVar20 = false;\n    bVar23 = this->have_stabstr_section_ == false;\n    if (bVar23) {\n      iVar15 = 5;\n      pbVar18 = (byte *)name;\n      pbVar19 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      if ((!bVar20 && !bVar23) == bVar20) {\n        sVar11 = strlen(name);\n        bVar20 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar23 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar15 = 4;\n        pbVar18 = (byte *)(name + (sVar11 - 3));\n        pbVar19 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        if ((!bVar20 && !bVar23) == bVar20) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }\n  }\n  else if ((type == 1) || (type == 8)) {\n    bVar20 = order < ORDER_NON_RELRO_FIRST;\n    bVar23 = order == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < order) ||\n       (bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20))\n    {\n      iVar15 = 10;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (!bVar20) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar23 = false;\n        bVar20 = (!bVar21 && !bVar20) == bVar21;\n        if (!bVar20) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_000ad932:\n  if (this->sections_are_attached_ != false) {\n    if (*(Target **)(*(int *)pbVar1 + 0xc) == (Target *)0x0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f));\n    }\n    attach_section_to_segment(this,*(Target **)(*(int *)pbVar1 + 0xc),local_38);\n    local_38 = os;\n  }\n  return local_38;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "_Rb_tree_header *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "_func_int_varargs **pp_Var4;" type_identifier (pointer_declarator "**pp_Var4" * (pointer_declarator "*pp_Var4" * identifier)) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "Script_options *pSVar7;" type_identifier (pointer_declarator "*pSVar7" * identifier) ;) (declaration "Elf_Word EVar8;" 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 "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "_func_int_varargs *p_Var17;" type_identifier (pointer_declarator "*p_Var17" * identifier) ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "byte *pbVar19;" type_identifier (pointer_declarator "*pbVar19" * identifier) ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "bool bVar21;" primitive_type identifier ;) (declaration "bool bVar22;" primitive_type identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "byte bVar24;" type_identifier identifier ;) (declaration "bool local_49;" primitive_type identifier ;) (declaration "Output_section *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "Output_section *os;" type_identifier (pointer_declarator "*os" * identifier) ;) (expression_statement "bVar24 = 0;" (assignment_expression "bVar24 = 0" identifier = number_literal) ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;" (assignment_expression "pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2" identifier = (binary_expression "BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2" (binary_expression "BYTE_ARRAY_00291b75 + unaff_EDI" identifier + identifier) + number_literal)) ;) (if_statement "if ((flags & 2) != 0) goto LAB_000ad790;" 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_000ad790;" goto statement_identifier ;)) (expression_statement "pp_Var4 = *(_func_int_varargs ***)(*(int *)pbVar1 + 8);" (assignment_expression "pp_Var4 = *(_func_int_varargs ***)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(_func_int_varargs ***)(*(int *)pbVar1 + 8)" * (cast_expression "(_func_int_varargs ***)(*(int *)pbVar1 + 8)" ( (type_descriptor "_func_int_varargs ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar23 = pp_Var4 == (_func_int_varargs **)0x0;" (assignment_expression "bVar23 = pp_Var4 == (_func_int_varargs **)0x0" identifier = (binary_expression "pp_Var4 == (_func_int_varargs **)0x0" identifier == (cast_expression "(_func_int_varargs **)0x0" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal))) ;) (if_statement "if (bVar23) goto LAB_000adfbd;" if (parenthesized_expression "(bVar23)" ( identifier )) (goto_statement "goto LAB_000adfbd;" goto statement_identifier ;)) (expression_statement "iVar15 = 5;" (assignment_expression "iVar15 = 5" identifier = number_literal) ;) (expression_statement "p_Var17 = pp_Var4[0x267];" (assignment_expression "p_Var17 = pp_Var4[0x267]" identifier = (subscript_expression "pp_Var4[0x267]" identifier [ number_literal ])) ;) (expression_statement "pbVar18 = (byte *)(unaff_EDI + 0x1ab8b3);" (assignment_expression "pbVar18 = (byte *)(unaff_EDI + 0x1ab8b3)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1ab8b3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1ab8b3)" ( (binary_expression "unaff_EDI + 0x1ab8b3" identifier + number_literal) )))) ;) (do_statement "do {\n    if (iVar15 == 0) break;\n    iVar15 = iVar15 + -1;\n    bVar20 = (byte)*p_Var17 < *pbVar18;\n    bVar23 = *p_Var17 == (_func_int_varargs)*pbVar18;\n    p_Var17 = p_Var17 + (uint)bVar24 * -2 + 1;\n    pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n  } while (bVar23);" do (compound_statement "{\n    if (iVar15 == 0) break;\n    iVar15 = iVar15 + -1;\n    bVar20 = (byte)*p_Var17 < *pbVar18;\n    bVar23 = *p_Var17 == (_func_int_varargs)*pbVar18;\n    p_Var17 = p_Var17 + (uint)bVar24 * -2 + 1;\n    pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n  }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = (byte)*p_Var17 < *pbVar18;" (assignment_expression "bVar20 = (byte)*p_Var17 < *pbVar18" identifier = (binary_expression "(byte)*p_Var17 < *pbVar18" (binary_expression "(byte)*p_Var17" (parenthesized_expression "(byte)" ( identifier )) * identifier) < (pointer_expression "*pbVar18" * identifier))) ;) (expression_statement "bVar23 = *p_Var17 == (_func_int_varargs)*pbVar18;" (assignment_expression "bVar23 = *p_Var17 == (_func_int_varargs)*pbVar18" identifier = (binary_expression "*p_Var17 == (_func_int_varargs)*pbVar18" (pointer_expression "*p_Var17" * identifier) == (binary_expression "(_func_int_varargs)*pbVar18" (parenthesized_expression "(_func_int_varargs)" ( identifier )) * identifier))) ;) (expression_statement "p_Var17 = p_Var17 + (uint)bVar24 * -2 + 1;" (assignment_expression "p_Var17 = p_Var17 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "p_Var17 + (uint)bVar24 * -2 + 1" (binary_expression "p_Var17 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar20 = (!bVar20 && !bVar23) == bVar20;" (assignment_expression "bVar20 = (!bVar20 && !bVar23) == bVar20" identifier = (binary_expression "(!bVar20 && !bVar23) == bVar20" (parenthesized_expression "(!bVar20 && !bVar23)" ( (binary_expression "!bVar20 && !bVar23" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar20) {\nLAB_000ad742:\n    bVar20 = false;\n    bVar23 = *(char *)((int)pp_Var4 + 0x3561) == '\0';\n    if (bVar23) {\nLAB_000ad790:\n      bVar20 = type == 0;\n      bVar23 = type == 1;\n      EVar8 = type;\n      if (bVar23) {\n        iVar15 = 0xb;\n        pbVar18 = &DAT_001a7af8 + unaff_EDI;\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (bVar20) {\n          type = 0xe;\n          EVar8 = type;\n        }\n        else {\n          iVar15 = 0xe;\n          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar19 = (byte *)name;\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar23 = false;\n          bVar20 = (!bVar21 && !bVar20) == bVar21;\n          if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }\n        }\n      }\n      type = EVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      os = (Output_section *)(**(code **)(*piVar5 + 100))(piVar5,name,type,(undefined4)flags);\n    }\n    else {\n      iVar15 = 0xe;\n      pbVar18 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar19 = (byte *)name;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (bVar20) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x118);\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\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->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28dddb);\n        p_Var3 = &(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_Var3->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var3->_M_header;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        this->debug_abbrev_ = pOVar13;\n        pOVar14 = this->debug_info_;\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        puVar2 = &(pOVar13->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        iVar15 = 0xc;\n        pbVar18 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        pOVar14->failed_ = false;\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        this->debug_info_ = pOVar14;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        puVar2 = &(pOVar14->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\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    iVar15 = 6;\n    pbVar18 = &DAT_0019de84 + unaff_EDI;\n    pbVar19 = (byte *)name;\n    do {\n      if (iVar15 == 0) break;\n      iVar15 = iVar15 + -1;\n      bVar21 = *pbVar18 < *pbVar19;\n      bVar20 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    } while (bVar20);\n    if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad742;\n    pOVar12 = (Output_section *)operator_new(0x108);\n                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */\n    Output_section::Output_section(pOVar12,name,type,flags);\n    *(undefined4 *)&pOVar12[1].super_Output_data.data_size_ = 0;\n    *(undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4) = 0;\n    (pOVar12->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x28e307);\n    pOVar12->field_0x90 = pOVar12->field_0x90 | 0x30;\n    pOVar12[1].super_Output_data._vptr_Output_data = pp_Var4;\n    *(undefined1 **)((int)&pOVar12[1].super_Output_data.address_ + 4) =\n         (undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4);\n    os = pOVar12;\n  }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\nLAB_000ad742:\n    bVar20 = false;\n    bVar23 = *(char *)((int)pp_Var4 + 0x3561) == '\0';\n    if (bVar23) {\nLAB_000ad790:\n      bVar20 = type == 0;\n      bVar23 = type == 1;\n      EVar8 = type;\n      if (bVar23) {\n        iVar15 = 0xb;\n        pbVar18 = &DAT_001a7af8 + unaff_EDI;\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (bVar20) {\n          type = 0xe;\n          EVar8 = type;\n        }\n        else {\n          iVar15 = 0xe;\n          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar19 = (byte *)name;\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar23 = false;\n          bVar20 = (!bVar21 && !bVar20) == bVar21;\n          if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }\n        }\n      }\n      type = EVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      os = (Output_section *)(**(code **)(*piVar5 + 100))(piVar5,name,type,(undefined4)flags);\n    }\n    else {\n      iVar15 = 0xe;\n      pbVar18 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar19 = (byte *)name;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (bVar20) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x118);\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\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->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28dddb);\n        p_Var3 = &(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_Var3->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var3->_M_header;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        this->debug_abbrev_ = pOVar13;\n        pOVar14 = this->debug_info_;\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        puVar2 = &(pOVar13->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        iVar15 = 0xc;\n        pbVar18 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        pOVar14->failed_ = false;\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        this->debug_info_ = pOVar14;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        puVar2 = &(pOVar14->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\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_000ad742:\n    bVar20 = false;" statement_identifier : (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;)) (expression_statement "bVar23 = *(char *)((int)pp_Var4 + 0x3561) == '\0';" (assignment_expression "bVar23 = *(char *)((int)pp_Var4 + 0x3561) == '\0'" identifier = (binary_expression "*(char *)((int)pp_Var4 + 0x3561) == '\0'" (pointer_expression "*(char *)((int)pp_Var4 + 0x3561)" * (cast_expression "(char *)((int)pp_Var4 + 0x3561)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pp_Var4 + 0x3561)" ( (binary_expression "(int)pp_Var4 + 0x3561" (cast_expression "(int)pp_Var4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar23) {\nLAB_000ad790:\n      bVar20 = type == 0;\n      bVar23 = type == 1;\n      EVar8 = type;\n      if (bVar23) {\n        iVar15 = 0xb;\n        pbVar18 = &DAT_001a7af8 + unaff_EDI;\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (bVar20) {\n          type = 0xe;\n          EVar8 = type;\n        }\n        else {\n          iVar15 = 0xe;\n          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar19 = (byte *)name;\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar23 = false;\n          bVar20 = (!bVar21 && !bVar20) == bVar21;\n          if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }\n        }\n      }\n      type = EVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      os = (Output_section *)(**(code **)(*piVar5 + 100))(piVar5,name,type,(undefined4)flags);\n    }\n    else {\n      iVar15 = 0xe;\n      pbVar18 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar19 = (byte *)name;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (bVar20) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x118);\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\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->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28dddb);\n        p_Var3 = &(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_Var3->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var3->_M_header;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        this->debug_abbrev_ = pOVar13;\n        pOVar14 = this->debug_info_;\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        puVar2 = &(pOVar13->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        iVar15 = 0xc;\n        pbVar18 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        pOVar14->failed_ = false;\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        this->debug_info_ = pOVar14;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        puVar2 = &(pOVar14->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\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 "(bVar23)" ( identifier )) (compound_statement "{\nLAB_000ad790:\n      bVar20 = type == 0;\n      bVar23 = type == 1;\n      EVar8 = type;\n      if (bVar23) {\n        iVar15 = 0xb;\n        pbVar18 = &DAT_001a7af8 + unaff_EDI;\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (bVar20) {\n          type = 0xe;\n          EVar8 = type;\n        }\n        else {\n          iVar15 = 0xe;\n          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar19 = (byte *)name;\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar23 = false;\n          bVar20 = (!bVar21 && !bVar20) == bVar21;\n          if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }\n        }\n      }\n      type = EVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      os = (Output_section *)(**(code **)(*piVar5 + 100))(piVar5,name,type,(undefined4)flags);\n    }" { (labeled_statement "LAB_000ad790:\n      bVar20 = type == 0;" statement_identifier : (expression_statement "bVar20 = type == 0;" (assignment_expression "bVar20 = type == 0" identifier = (binary_expression "type == 0" identifier == number_literal)) ;)) (expression_statement "bVar23 = type == 1;" (assignment_expression "bVar23 = type == 1" identifier = (binary_expression "type == 1" identifier == number_literal)) ;) (expression_statement "EVar8 = type;" (assignment_expression "EVar8 = type" identifier = identifier) ;) (if_statement "if (bVar23) {\n        iVar15 = 0xb;\n        pbVar18 = &DAT_001a7af8 + unaff_EDI;\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (bVar20) {\n          type = 0xe;\n          EVar8 = type;\n        }\n        else {\n          iVar15 = 0xe;\n          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar19 = (byte *)name;\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar23 = false;\n          bVar20 = (!bVar21 && !bVar20) == bVar21;\n          if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar23)" ( identifier )) (compound_statement "{\n        iVar15 = 0xb;\n        pbVar18 = &DAT_001a7af8 + unaff_EDI;\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (bVar20) {\n          type = 0xe;\n          EVar8 = type;\n        }\n        else {\n          iVar15 = 0xe;\n          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar19 = (byte *)name;\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar23 = false;\n          bVar20 = (!bVar21 && !bVar20) == bVar21;\n          if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }\n        }\n      }" { (expression_statement "iVar15 = 0xb;" (assignment_expression "iVar15 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar18 = &DAT_001a7af8 + unaff_EDI;" (assignment_expression "pbVar18 = &DAT_001a7af8 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af8 + unaff_EDI" (pointer_expression "&DAT_001a7af8" & identifier) + identifier)) ;) (expression_statement "pbVar19 = (byte *)name;" (assignment_expression "pbVar19 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);" do (compound_statement "{\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar18 < *pbVar19;" (assignment_expression "bVar20 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar20 = (!bVar20 && !bVar23) == bVar20;" (assignment_expression "bVar20 = (!bVar20 && !bVar23) == bVar20" identifier = (binary_expression "(!bVar20 && !bVar23) == bVar20" (parenthesized_expression "(!bVar20 && !bVar23)" ( (binary_expression "!bVar20 && !bVar23" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar20) {\n          type = 0xe;\n          EVar8 = type;\n        }\n        else {\n          iVar15 = 0xe;\n          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar19 = (byte *)name;\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar23 = false;\n          bVar20 = (!bVar21 && !bVar20) == bVar21;\n          if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }\n        }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n          type = 0xe;\n          EVar8 = type;\n        }" { (expression_statement "type = 0xe;" (assignment_expression "type = 0xe" identifier = number_literal) ;) (expression_statement "EVar8 = type;" (assignment_expression "EVar8 = type" identifier = identifier) ;) }) (else_clause "else {\n          iVar15 = 0xe;\n          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar19 = (byte *)name;\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar23 = false;\n          bVar20 = (!bVar21 && !bVar20) == bVar21;\n          if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }\n        }" else (compound_statement "{\n          iVar15 = 0xe;\n          pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar19 = (byte *)name;\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar23 = false;\n          bVar20 = (!bVar21 && !bVar20) == bVar21;\n          if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }\n        }" { (expression_statement "iVar15 = 0xe;" (assignment_expression "iVar15 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)(unaff_EDI + 0x1a7b92);" (assignment_expression "pbVar18 = (byte *)(unaff_EDI + 0x1a7b92)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b92)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b92)" ( (binary_expression "unaff_EDI + 0x1a7b92" identifier + number_literal) )))) ;) (expression_statement "pbVar19 = (byte *)name;" (assignment_expression "pbVar19 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);" do (compound_statement "{\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar18 < *pbVar19;" (assignment_expression "bVar21 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) (expression_statement "bVar20 = (!bVar21 && !bVar20) == bVar21;" (assignment_expression "bVar20 = (!bVar21 && !bVar20) == bVar21" identifier = (binary_expression "(!bVar21 && !bVar20) == bVar21" (parenthesized_expression "(!bVar21 && !bVar20)" ( (binary_expression "!bVar21 && !bVar20" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar20) {\n            type = 0x10;\n            EVar8 = type;\n          }\n          else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n            type = 0x10;\n            EVar8 = type;\n          }" { (expression_statement "type = 0x10;" (assignment_expression "type = 0x10" identifier = number_literal) ;) (expression_statement "EVar8 = type;" (assignment_expression "EVar8 = type" identifier = identifier) ;) }) (else_clause "else {\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }" else (compound_statement "{\n            iVar15 = 0xb;\n            pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar19 = (byte *)name;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            EVar8 = 0xf;\n            if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }\n          }" { (expression_statement "iVar15 = 0xb;" (assignment_expression "iVar15 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)(unaff_EDI + 0x1a7b04);" (assignment_expression "pbVar18 = (byte *)(unaff_EDI + 0x1a7b04)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b04)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b04)" ( (binary_expression "unaff_EDI + 0x1a7b04" identifier + number_literal) )))) ;) (expression_statement "pbVar19 = (byte *)name;" (assignment_expression "pbVar19 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);" do (compound_statement "{\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar23 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar23 = *pbVar18 < *pbVar19;" (assignment_expression "bVar23 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (expression_statement "EVar8 = 0xf;" (assignment_expression "EVar8 = 0xf" identifier = number_literal) ;) (if_statement "if ((!bVar23 && !bVar20) != bVar23) {\n              EVar8 = type;\n            }" if (parenthesized_expression "((!bVar23 && !bVar20) != bVar23)" ( (binary_expression "(!bVar23 && !bVar20) != bVar23" (parenthesized_expression "(!bVar23 && !bVar20)" ( (binary_expression "!bVar23 && !bVar20" (unary_expression "!bVar23" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) != identifier) )) (compound_statement "{\n              EVar8 = type;\n            }" { (expression_statement "EVar8 = type;" (assignment_expression "EVar8 = type" identifier = identifier) ;) })) }))) }))) })) (expression_statement "type = EVar8;" (assignment_expression "type = EVar8" identifier = identifier) ;) (expression_statement "piVar5 = *(int **)(*(int *)pbVar1 + 0xc);" (assignment_expression "piVar5 = *(int **)(*(int *)pbVar1 + 0xc)" identifier = (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (piVar5 == (int *)0x0) goto LAB_000ae083;" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000ae083;" goto statement_identifier ;)) (expression_statement "os = (Output_section *)(**(code **)(*piVar5 + 100))(piVar5,name,type,(undefined4)flags);" (assignment_expression "os = (Output_section *)(**(code **)(*piVar5 + 100))(piVar5,name,type,(undefined4)flags)" identifier = (cast_expression "(Output_section *)(**(code **)(*piVar5 + 100))(piVar5,name,type,(undefined4)flags)" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*piVar5 + 100))(piVar5,name,type,(undefined4)flags)" (parenthesized_expression "(**(code **)(*piVar5 + 100))" ( (pointer_expression "**(code **)(*piVar5 + 100)" * (pointer_expression "*(code **)(*piVar5 + 100)" * (cast_expression "(code **)(*piVar5 + 100)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 100)" ( (binary_expression "*piVar5 + 100" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,name,type,(undefined4)flags)" ( identifier , identifier , identifier , (cast_expression "(undefined4)flags" ( (type_descriptor "undefined4" type_identifier) ) identifier) ))))) ;) }) (else_clause "else {\n      iVar15 = 0xe;\n      pbVar18 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar19 = (byte *)name;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (bVar20) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x118);\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\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->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28dddb);\n        p_Var3 = &(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_Var3->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var3->_M_header;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        this->debug_abbrev_ = pOVar13;\n        pOVar14 = this->debug_info_;\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        puVar2 = &(pOVar13->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        iVar15 = 0xc;\n        pbVar18 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        pOVar14->failed_ = false;\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        this->debug_info_ = pOVar14;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        puVar2 = &(pOVar14->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\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      iVar15 = 0xe;\n      pbVar18 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar19 = (byte *)name;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (bVar20) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x118);\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\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->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28dddb);\n        p_Var3 = &(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_Var3->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var3->_M_header;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        this->debug_abbrev_ = pOVar13;\n        pOVar14 = this->debug_info_;\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        puVar2 = &(pOVar13->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        iVar15 = 0xc;\n        pbVar18 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        pOVar14->failed_ = false;\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        this->debug_info_ = pOVar14;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        puVar2 = &(pOVar14->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n    }" { (expression_statement "iVar15 = 0xe;" (assignment_expression "iVar15 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)(unaff_EDI + 0x1a7b84);" (assignment_expression "pbVar18 = (byte *)(unaff_EDI + 0x1a7b84)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b84)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b84)" ( (binary_expression "unaff_EDI + 0x1a7b84" identifier + number_literal) )))) ;) (expression_statement "pbVar19 = (byte *)name;" (assignment_expression "pbVar19 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);" do (compound_statement "{\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar18 < *pbVar19;" (assignment_expression "bVar20 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar20 = (!bVar20 && !bVar23) == bVar20;" (assignment_expression "bVar20 = (!bVar20 && !bVar23) == bVar20" identifier = (binary_expression "(!bVar20 && !bVar23) == bVar20" (parenthesized_expression "(!bVar20 && !bVar23)" ( (binary_expression "!bVar20 && !bVar23" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar20) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x118);\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\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->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28dddb);\n        p_Var3 = &(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_Var3->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var3->_M_header;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        this->debug_abbrev_ = pOVar13;\n        pOVar14 = this->debug_info_;\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        puVar2 = &(pOVar13->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        iVar15 = 0xc;\n        pbVar18 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        pOVar14->failed_ = false;\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        this->debug_info_ = pOVar14;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        puVar2 = &(pOVar14->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x118);\n                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\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->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28dddb);\n        p_Var3 = &(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_Var3->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var3->_M_header;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        this->debug_abbrev_ = pOVar13;\n        pOVar14 = this->debug_info_;\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        puVar2 = &(pOVar13->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\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(0x118);" (assignment_expression "pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x118)" identifier = (cast_expression "(Output_reduced_debug_abbrev_section *)operator_new(0x118)" ( (type_descriptor "Output_reduced_debug_abbrev_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x118)" identifier (argument_list "(0x118)" ( 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 ))) ;)) (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)) ;) (expression_statement "(pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28dddb);" (assignment_expression "(pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28dddb)" (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 **)(unaff_EDI + 0x28dddb)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x28dddb)" ( (binary_expression "unaff_EDI + 0x28dddb" identifier + number_literal) )))) ;) (expression_statement "p_Var3 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var3 = &(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_Var3->_M_header;" (assignment_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var3->_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_Var3->_M_header" & (field_expression "p_Var3->_M_header" identifier -> field_identifier))) ;) (expression_statement "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var3->_M_header;" (assignment_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var3->_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_Var3->_M_header" & (field_expression "p_Var3->_M_header" 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_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 "this->debug_abbrev_ = pOVar13;" (assignment_expression "this->debug_abbrev_ = pOVar13" (field_expression "this->debug_abbrev_" identifier -> field_identifier) = identifier) ;) (expression_statement "pOVar14 = this->debug_info_;" (assignment_expression "pOVar14 = this->debug_info_" identifier = (field_expression "this->debug_info_" identifier -> field_identifier)) ;) (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 "puVar2 = &(pOVar13->super_Output_section).field_0x90;" (assignment_expression "puVar2 = &(pOVar13->super_Output_section).field_0x90" identifier = (pointer_expression "&(pOVar13->super_Output_section).field_0x90" & (field_expression "(pOVar13->super_Output_section).field_0x90" (parenthesized_expression "(pOVar13->super_Output_section)" ( (field_expression "pOVar13->super_Output_section" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*puVar2 = *puVar2 | 0x30;" (assignment_expression "*puVar2 = *puVar2 | 0x30" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | 0x30" (pointer_expression "*puVar2" * identifier) | number_literal)) ;) (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        iVar15 = 0xc;\n        pbVar18 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        pOVar14->failed_ = false;\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        this->debug_info_ = pOVar14;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        puVar2 = &(pOVar14->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\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        iVar15 = 0xc;\n        pbVar18 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar19 = (byte *)name;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);\n                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        pOVar14->failed_ = false;\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37);\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        this->debug_info_ = pOVar14;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        puVar2 = &(pOVar14->super_Output_section).field_0x90;\n        *puVar2 = *puVar2 | 0x30;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }" { (expression_statement "iVar15 = 0xc;" (assignment_expression "iVar15 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)(unaff_EDI + 0x1a6604);" (assignment_expression "pbVar18 = (byte *)(unaff_EDI + 0x1a6604)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a6604)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a6604)" ( (binary_expression "unaff_EDI + 0x1a6604" identifier + number_literal) )))) ;) (expression_statement "pbVar19 = (byte *)name;" (assignment_expression "pbVar19 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);" do (compound_statement "{\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar18 < *pbVar19;" (assignment_expression "bVar21 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (if_statement "if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad790;" if (parenthesized_expression "((!bVar21 && !bVar20) != bVar21)" ( (binary_expression "(!bVar21 && !bVar20) != bVar21" (parenthesized_expression "(!bVar21 && !bVar20)" ( (binary_expression "!bVar21 && !bVar20" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad790;" goto statement_identifier ;)) (expression_statement "pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc);" (assignment_expression "pOVar14 = (Output_reduced_debug_info_section *)operator_new(0xfc)" identifier = (cast_expression "(Output_reduced_debug_info_section *)operator_new(0xfc)" ( (type_descriptor "Output_reduced_debug_info_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xfc)" identifier (argument_list "(0xfc)" ( 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 ))) ;)) (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)) ;) (expression_statement "pOVar14->failed_ = false;" (assignment_expression "pOVar14->failed_ = false" (field_expression "pOVar14->failed_" identifier -> field_identifier) = false) ;) (expression_statement "(pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37);" (assignment_expression "(pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)(unaff_EDI + 0x28de37)" (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 **)(unaff_EDI + 0x28de37)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x28de37)" ( (binary_expression "unaff_EDI + 0x28de37" 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)) ;) (expression_statement "this->debug_info_ = pOVar14;" (assignment_expression "this->debug_info_ = pOVar14" (field_expression "this->debug_info_" identifier -> field_identifier) = 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_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 "puVar2 = &(pOVar14->super_Output_section).field_0x90;" (assignment_expression "puVar2 = &(pOVar14->super_Output_section).field_0x90" identifier = (pointer_expression "&(pOVar14->super_Output_section).field_0x90" & (field_expression "(pOVar14->super_Output_section).field_0x90" (parenthesized_expression "(pOVar14->super_Output_section)" ( (field_expression "pOVar14->super_Output_section" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*puVar2 = *puVar2 | 0x30;" (assignment_expression "*puVar2 = *puVar2 | 0x30" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | 0x30" (pointer_expression "*puVar2" * identifier) | number_literal)) ;) (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    iVar15 = 6;\n    pbVar18 = &DAT_0019de84 + unaff_EDI;\n    pbVar19 = (byte *)name;\n    do {\n      if (iVar15 == 0) break;\n      iVar15 = iVar15 + -1;\n      bVar21 = *pbVar18 < *pbVar19;\n      bVar20 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    } while (bVar20);\n    if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad742;\n    pOVar12 = (Output_section *)operator_new(0x108);\n                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */\n    Output_section::Output_section(pOVar12,name,type,flags);\n    *(undefined4 *)&pOVar12[1].super_Output_data.data_size_ = 0;\n    *(undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4) = 0;\n    (pOVar12->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x28e307);\n    pOVar12->field_0x90 = pOVar12->field_0x90 | 0x30;\n    pOVar12[1].super_Output_data._vptr_Output_data = pp_Var4;\n    *(undefined1 **)((int)&pOVar12[1].super_Output_data.address_ + 4) =\n         (undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4);\n    os = pOVar12;\n  }" else (compound_statement "{\n    iVar15 = 6;\n    pbVar18 = &DAT_0019de84 + unaff_EDI;\n    pbVar19 = (byte *)name;\n    do {\n      if (iVar15 == 0) break;\n      iVar15 = iVar15 + -1;\n      bVar21 = *pbVar18 < *pbVar19;\n      bVar20 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    } while (bVar20);\n    if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad742;\n    pOVar12 = (Output_section *)operator_new(0x108);\n                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */\n    Output_section::Output_section(pOVar12,name,type,flags);\n    *(undefined4 *)&pOVar12[1].super_Output_data.data_size_ = 0;\n    *(undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4) = 0;\n    (pOVar12->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x28e307);\n    pOVar12->field_0x90 = pOVar12->field_0x90 | 0x30;\n    pOVar12[1].super_Output_data._vptr_Output_data = pp_Var4;\n    *(undefined1 **)((int)&pOVar12[1].super_Output_data.address_ + 4) =\n         (undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4);\n    os = pOVar12;\n  }" { (expression_statement "iVar15 = 6;" (assignment_expression "iVar15 = 6" identifier = number_literal) ;) (expression_statement "pbVar18 = &DAT_0019de84 + unaff_EDI;" (assignment_expression "pbVar18 = &DAT_0019de84 + unaff_EDI" identifier = (binary_expression "&DAT_0019de84 + unaff_EDI" (pointer_expression "&DAT_0019de84" & identifier) + identifier)) ;) (expression_statement "pbVar19 = (byte *)name;" (assignment_expression "pbVar19 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n      if (iVar15 == 0) break;\n      iVar15 = iVar15 + -1;\n      bVar21 = *pbVar18 < *pbVar19;\n      bVar20 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    } while (bVar20);" do (compound_statement "{\n      if (iVar15 == 0) break;\n      iVar15 = iVar15 + -1;\n      bVar21 = *pbVar18 < *pbVar19;\n      bVar20 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar18 < *pbVar19;" (assignment_expression "bVar21 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (if_statement "if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad742;" if (parenthesized_expression "((!bVar21 && !bVar20) != bVar21)" ( (binary_expression "(!bVar21 && !bVar20) != bVar21" (parenthesized_expression "(!bVar21 && !bVar20)" ( (binary_expression "!bVar21 && !bVar20" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad742;" goto statement_identifier ;)) (expression_statement "pOVar12 = (Output_section *)operator_new(0x108);" (assignment_expression "pOVar12 = (Output_section *)operator_new(0x108)" identifier = (cast_expression "(Output_section *)operator_new(0x108)" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x108)" identifier (argument_list "(0x108)" ( 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 "*(undefined4 *)&pOVar12[1].super_Output_data.data_size_ = 0;" (assignment_expression "*(undefined4 *)&pOVar12[1].super_Output_data.data_size_ = 0" (pointer_expression "*(undefined4 *)&pOVar12[1].super_Output_data.data_size_" * (cast_expression "(undefined4 *)&pOVar12[1].super_Output_data.data_size_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar12[1].super_Output_data.data_size_" & (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)))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4) = 0;" (assignment_expression "*(undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4) = 0" (pointer_expression "*(undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4)" * (cast_expression "(undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pOVar12[1].super_Output_data.data_size_ + 4)" ( (binary_expression "(int)&pOVar12[1].super_Output_data.data_size_ + 4" (cast_expression "(int)&pOVar12[1].super_Output_data.data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pOVar12[1].super_Output_data.data_size_" & (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))) + number_literal) )))) = number_literal) ;) (expression_statement "(pOVar12->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x28e307);" (assignment_expression "(pOVar12->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x28e307)" (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 **)(unaff_EDI + 0x28e307)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x28e307)" ( (binary_expression "unaff_EDI + 0x28e307" identifier + number_literal) )))) ;) (expression_statement "pOVar12->field_0x90 = pOVar12->field_0x90 | 0x30;" (assignment_expression "pOVar12->field_0x90 = pOVar12->field_0x90 | 0x30" (field_expression "pOVar12->field_0x90" identifier -> field_identifier) = (binary_expression "pOVar12->field_0x90 | 0x30" (field_expression "pOVar12->field_0x90" identifier -> field_identifier) | number_literal)) ;) (expression_statement "pOVar12[1].super_Output_data._vptr_Output_data = pp_Var4;" (assignment_expression "pOVar12[1].super_Output_data._vptr_Output_data = pp_Var4" (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) = identifier) ;) (expression_statement "*(undefined1 **)((int)&pOVar12[1].super_Output_data.address_ + 4) =\n         (undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4);" (assignment_expression "*(undefined1 **)((int)&pOVar12[1].super_Output_data.address_ + 4) =\n         (undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4)" (pointer_expression "*(undefined1 **)((int)&pOVar12[1].super_Output_data.address_ + 4)" * (cast_expression "(undefined1 **)((int)&pOVar12[1].super_Output_data.address_ + 4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&pOVar12[1].super_Output_data.address_ + 4)" ( (binary_expression "(int)&pOVar12[1].super_Output_data.address_ + 4" (cast_expression "(int)&pOVar12[1].super_Output_data.address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pOVar12[1].super_Output_data.address_" & (field_expression "pOVar12[1].super_Output_data.address_" (field_expression "pOVar12[1].super_Output_data" (subscript_expression "pOVar12[1]" identifier [ number_literal ]) . field_identifier) . field_identifier))) + number_literal) )))) = (cast_expression "(undefined1 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pOVar12[1].super_Output_data.data_size_ + 4)" ( (binary_expression "(int)&pOVar12[1].super_Output_data.data_size_ + 4" (cast_expression "(int)&pOVar12[1].super_Output_data.data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pOVar12[1].super_Output_data.data_size_" & (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))) + number_literal) )))) ;) (expression_statement "os = pOVar12;" (assignment_expression "os = pOVar12" identifier = identifier) ;) }))) (expression_statement "local_38 = os;" (assignment_expression "local_38 = os" identifier = identifier) ;) (expression_statement "local_49 = is_relro;" (assignment_expression "local_49 = is_relro" identifier = identifier) ;) (if_statement "if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    bVar20 = (bool)((flags & 2) != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9));\n    if ((bVar20 == false) || ((flags & 1) == 0)) goto LAB_000ad7d9;\n    if (type == 1) {\n      bVar23 = false;\n      bVar21 = (flags & 0x400) == 0;\n      if (!bVar21) goto LAB_000ad7df;\n      iVar15 = 0xd;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a4b74);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar23 = *pbVar18 < *pbVar19;\n        bVar21 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      bVar22 = false;\n      bVar23 = (!bVar23 && !bVar21) == bVar23;\n      if (bVar23) goto LAB_000ad7df;\n      iVar15 = 0x13;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7ba1);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar22 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar23 = (!bVar22 && !bVar23) == bVar22;\n      if (!bVar23) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar20 = false;\n        bVar23 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar23) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if (((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;\n        }\n        goto LAB_000ad7df;\n      }\n    }\n    else {\n      if (2 < type - 0xe) goto LAB_000ad7d9;\nLAB_000ad7df:\n      local_49 = false;\n      bVar20 = local_49;\n    }\n    local_49 = bVar20;\n    local_38->field_0x91 = local_38->field_0x91 | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (is_relro) goto LAB_000ad7df;\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 (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    bVar20 = (bool)((flags & 2) != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9));\n    if ((bVar20 == false) || ((flags & 1) == 0)) goto LAB_000ad7d9;\n    if (type == 1) {\n      bVar23 = false;\n      bVar21 = (flags & 0x400) == 0;\n      if (!bVar21) goto LAB_000ad7df;\n      iVar15 = 0xd;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a4b74);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar23 = *pbVar18 < *pbVar19;\n        bVar21 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      bVar22 = false;\n      bVar23 = (!bVar23 && !bVar21) == bVar23;\n      if (bVar23) goto LAB_000ad7df;\n      iVar15 = 0x13;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7ba1);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar22 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar23 = (!bVar22 && !bVar23) == bVar22;\n      if (!bVar23) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar20 = false;\n        bVar23 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar23) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if (((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;\n        }\n        goto LAB_000ad7df;\n      }\n    }\n    else {\n      if (2 < type - 0xe) goto LAB_000ad7d9;\nLAB_000ad7df:\n      local_49 = false;\n      bVar20 = local_49;\n    }\n    local_49 = bVar20;\n    local_38->field_0x91 = local_38->field_0x91 | 0x20;\n  }" { (if_statement "if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000adfbd;" goto statement_identifier ;)) (expression_statement "bVar20 = (bool)((flags & 2) != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9));" (assignment_expression "bVar20 = (bool)((flags & 2) != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9))" identifier = (cast_expression "(bool)((flags & 2) != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9))" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "((flags & 2) != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9))" ( (binary_expression "(flags & 2) != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" (binary_expression "(flags & 2) != 0" (parenthesized_expression "(flags & 2)" ( (binary_expression "flags & 2" identifier & number_literal) )) != number_literal) & (pointer_expression "*(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" * (cast_expression "(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) + 0x56b9" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) ))))) )))) ;) (if_statement "if ((bVar20 == false) || ((flags & 1) == 0)) goto LAB_000ad7d9;" if (parenthesized_expression "((bVar20 == false) || ((flags & 1) == 0))" ( (binary_expression "(bVar20 == false) || ((flags & 1) == 0)" (parenthesized_expression "(bVar20 == false)" ( (binary_expression "bVar20 == false" identifier == false) )) || (parenthesized_expression "((flags & 1) == 0)" ( (binary_expression "(flags & 1) == 0" (parenthesized_expression "(flags & 1)" ( (binary_expression "flags & 1" identifier & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_000ad7d9;" goto statement_identifier ;)) (if_statement "if (type == 1) {\n      bVar23 = false;\n      bVar21 = (flags & 0x400) == 0;\n      if (!bVar21) goto LAB_000ad7df;\n      iVar15 = 0xd;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a4b74);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar23 = *pbVar18 < *pbVar19;\n        bVar21 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      bVar22 = false;\n      bVar23 = (!bVar23 && !bVar21) == bVar23;\n      if (bVar23) goto LAB_000ad7df;\n      iVar15 = 0x13;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7ba1);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar22 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar23 = (!bVar22 && !bVar23) == bVar22;\n      if (!bVar23) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar20 = false;\n        bVar23 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar23) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if (((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;\n        }\n        goto LAB_000ad7df;\n      }\n    }\n    else {\n      if (2 < type - 0xe) goto LAB_000ad7d9;\nLAB_000ad7df:\n      local_49 = false;\n      bVar20 = local_49;\n    }" if (parenthesized_expression "(type == 1)" ( (binary_expression "type == 1" identifier == number_literal) )) (compound_statement "{\n      bVar23 = false;\n      bVar21 = (flags & 0x400) == 0;\n      if (!bVar21) goto LAB_000ad7df;\n      iVar15 = 0xd;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a4b74);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar23 = *pbVar18 < *pbVar19;\n        bVar21 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);\n      bVar22 = false;\n      bVar23 = (!bVar23 && !bVar21) == bVar23;\n      if (bVar23) goto LAB_000ad7df;\n      iVar15 = 0x13;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7ba1);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar22 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar23 = (!bVar22 && !bVar23) == bVar22;\n      if (!bVar23) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar20 = false;\n        bVar23 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar23) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if (((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;\n        }\n        goto LAB_000ad7df;\n      }\n    }" { (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) (expression_statement "bVar21 = (flags & 0x400) == 0;" (assignment_expression "bVar21 = (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 (!bVar21) goto LAB_000ad7df;" if (parenthesized_expression "(!bVar21)" ( (unary_expression "!bVar21" ! identifier) )) (goto_statement "goto LAB_000ad7df;" goto statement_identifier ;)) (expression_statement "iVar15 = 0xd;" (assignment_expression "iVar15 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = (byte *)(unaff_EDI + 0x1a4b74);" (assignment_expression "pbVar19 = (byte *)(unaff_EDI + 0x1a4b74)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a4b74)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a4b74)" ( (binary_expression "unaff_EDI + 0x1a4b74" identifier + number_literal) )))) ;) (do_statement "do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar23 = *pbVar18 < *pbVar19;\n        bVar21 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar21);" do (compound_statement "{\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar23 = *pbVar18 < *pbVar19;\n        bVar21 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar23 = *pbVar18 < *pbVar19;" (assignment_expression "bVar23 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar21 = *pbVar18 == *pbVar19;" (assignment_expression "bVar21 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar21)" ( identifier )) ;) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "bVar23 = (!bVar23 && !bVar21) == bVar23;" (assignment_expression "bVar23 = (!bVar23 && !bVar21) == bVar23" identifier = (binary_expression "(!bVar23 && !bVar21) == bVar23" (parenthesized_expression "(!bVar23 && !bVar21)" ( (binary_expression "!bVar23 && !bVar21" (unary_expression "!bVar23" ! identifier) && (unary_expression "!bVar21" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar23) goto LAB_000ad7df;" if (parenthesized_expression "(bVar23)" ( identifier )) (goto_statement "goto LAB_000ad7df;" goto statement_identifier ;)) (expression_statement "iVar15 = 0x13;" (assignment_expression "iVar15 = 0x13" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = (byte *)(unaff_EDI + 0x1a7ba1);" (assignment_expression "pbVar19 = (byte *)(unaff_EDI + 0x1a7ba1)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7ba1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7ba1)" ( (binary_expression "unaff_EDI + 0x1a7ba1" identifier + number_literal) )))) ;) (do_statement "do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar22 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);" do (compound_statement "{\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar22 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = *pbVar18 < *pbVar19;" (assignment_expression "bVar22 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar23 = (!bVar22 && !bVar23) == bVar22;" (assignment_expression "bVar23 = (!bVar22 && !bVar23) == bVar22" identifier = (binary_expression "(!bVar22 && !bVar23) == bVar22" (parenthesized_expression "(!bVar22 && !bVar23)" ( (binary_expression "!bVar22 && !bVar23" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar23) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar20 = false;\n        bVar23 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar23) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if (((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;\n        }\n        goto LAB_000ad7df;\n      }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar20 = false;\n        bVar23 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar23) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if (((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;\n        }\n        goto LAB_000ad7df;\n      }" { (expression_statement "iVar15 = 7;" (assignment_expression "iVar15 = 7" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar19 = &DAT_001a7af1 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" & identifier) + identifier)) ;) (do_statement "do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);" do (compound_statement "{\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar18 < *pbVar19;" (assignment_expression "bVar21 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar23 = (!bVar21 && !bVar23) == bVar21;" (assignment_expression "bVar23 = (!bVar21 && !bVar23) == bVar21" identifier = (binary_expression "(!bVar21 && !bVar23) == bVar21" (parenthesized_expression "(!bVar21 && !bVar23)" ( (binary_expression "!bVar21 && !bVar23" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar23) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if (((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;\n        }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if (((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;\n        }" { (expression_statement "iVar15 = 7;" (assignment_expression "iVar15 = 7" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar19 = (byte *)(unaff_EDI + 0x1a7b10)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b10)" ( (binary_expression "unaff_EDI + 0x1a7b10" identifier + number_literal) )))) ;) (do_statement "do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);" do (compound_statement "{\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar20 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar18 < *pbVar19;" (assignment_expression "bVar20 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (if_statement "if (((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)) goto LAB_000ad7d9;" if (parenthesized_expression "(((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0))" ( (binary_expression "((!bVar20 && !bVar23) != bVar20) &&\n             (iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)" (parenthesized_expression "((!bVar20 && !bVar23) != bVar20)" ( (binary_expression "(!bVar20 && !bVar23) != bVar20" (parenthesized_expression "(!bVar20 && !bVar23)" ( (binary_expression "!bVar20 && !bVar23" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) != identifier) )) && (parenthesized_expression "(iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0)" ( (comma_expression "iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI), iVar15 != 0" (assignment_expression "iVar15 = strcmp(name,&DAT_001a7bb4 + unaff_EDI)" identifier = (call_expression "strcmp(name,&DAT_001a7bb4 + unaff_EDI)" identifier (argument_list "(name,&DAT_001a7bb4 + unaff_EDI)" ( identifier , (binary_expression "&DAT_001a7bb4 + unaff_EDI" (pointer_expression "&DAT_001a7bb4" & identifier) + identifier) )))) , (binary_expression "iVar15 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000ad7d9;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000ad7df;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (2 < type - 0xe) goto LAB_000ad7d9;\nLAB_000ad7df:\n      local_49 = false;\n      bVar20 = local_49;\n    }" else (compound_statement "{\n      if (2 < type - 0xe) goto LAB_000ad7d9;\nLAB_000ad7df:\n      local_49 = false;\n      bVar20 = local_49;\n    }" { (if_statement "if (2 < type - 0xe) goto LAB_000ad7d9;" if (parenthesized_expression "(2 < type - 0xe)" ( (binary_expression "2 < type - 0xe" number_literal < (binary_expression "type - 0xe" identifier - number_literal)) )) (goto_statement "goto LAB_000ad7d9;" goto statement_identifier ;)) (labeled_statement "LAB_000ad7df:\n      local_49 = false;" statement_identifier : (expression_statement "local_49 = false;" (assignment_expression "local_49 = false" identifier = false) ;)) (expression_statement "bVar20 = local_49;" (assignment_expression "bVar20 = local_49" identifier = identifier) ;) }))) (expression_statement "local_49 = bVar20;" (assignment_expression "local_49 = bVar20" identifier = identifier) ;) (expression_statement "local_38->field_0x91 = local_38->field_0x91 | 0x20;" (assignment_expression "local_38->field_0x91 = local_38->field_0x91 | 0x20" (field_expression "local_38->field_0x91" identifier -> field_identifier) = (binary_expression "local_38->field_0x91 | 0x20" (field_expression "local_38->field_0x91" identifier -> field_identifier) | number_literal)) ;) }) (else_clause "else {\nLAB_000ad7d9:\n    if (is_relro) goto LAB_000ad7df;\n  }" else (compound_statement "{\nLAB_000ad7d9:\n    if (is_relro) goto LAB_000ad7df;\n  }" { (labeled_statement "LAB_000ad7d9:\n    if (is_relro) goto LAB_000ad7df;" statement_identifier : (if_statement "if (is_relro) goto LAB_000ad7df;" if (parenthesized_expression "(is_relro)" ( identifier )) (goto_statement "goto LAB_000ad7df;" goto statement_identifier ;))) }))) (if_statement "if ((order == ORDER_INVALID) && ((flags & 2) != 0)) {\n    order = default_section_order(this,local_38,local_49);\n    local_38 = 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    order = default_section_order(this,local_38,local_49);\n    local_38 = os;\n  }" { (expression_statement "order = default_section_order(this,local_38,local_49);" (assignment_expression "order = default_section_order(this,local_38,local_49)" identifier = (call_expression "default_section_order(this,local_38,local_49)" identifier (argument_list "(this,local_38,local_49)" ( identifier , identifier , identifier )))) ;) (expression_statement "local_38 = os;" (assignment_expression "local_38 = os" identifier = identifier) ;) })) (expression_statement "local_38->order_ = order;" (assignment_expression "local_38->order_ = order" (field_expression "local_38->order_" identifier -> field_identifier) = identifier) ;) (if_statement "if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;" if (parenthesized_expression "(*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0)" ( (binary_expression "*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0" (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000ae083;" goto statement_identifier ;)) (expression_statement "pcVar6 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);" (assignment_expression "pcVar6 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" identifier = (pointer_expression "*(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" * (cast_expression "(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" ( (binary_expression "**(int **)(*(int *)pbVar1 + 0xc) + 0xc" (pointer_expression "**(int **)(*(int *)pbVar1 + 0xc)" * (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar6 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar6)();\n  }" if (parenthesized_expression "(pcVar6 != (code *)(unaff_EDI + -0x58979))" ( (binary_expression "pcVar6 != (code *)(unaff_EDI + -0x58979)" identifier != (cast_expression "(code *)(unaff_EDI + -0x58979)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x58979)" ( (binary_expression "unaff_EDI + -0x58979" identifier + number_literal) )))) )) (compound_statement "{\n    (*pcVar6)();\n  }" { (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( ))) ;) })) (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) {\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  else {\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  }" 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) )) (compound_statement "{\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  }" { (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))) ))) ;) }) (else_clause "else {\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  }" else (compound_statement "{\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 = 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)) ;) }))) (expression_statement "pOVar12 = os;" (assignment_expression "pOVar12 = os" identifier = identifier) ;) (expression_statement "pSVar7 = this->script_options_;" (assignment_expression "pSVar7 = this->script_options_" identifier = (field_expression "this->script_options_" identifier -> field_identifier)) ;) (expression_statement "iVar15 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar15 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if ((pSVar7->script_sections_).saw_sections_clause_ == false) {\n    if (iVar15 == 0) {\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x5c,(char *)(unaff_EDI + 0x1a8e6f));\n    }\n    bVar20 = false;\n    bVar23 = *(char *)(iVar15 + 0x318d) == '\0';\n    if (!bVar23) goto LAB_000ad8b2;\n    iVar16 = 0xc;\n    pbVar18 = (byte *)name;\n    pbVar19 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar16 == 0) break;\n      iVar16 = iVar16 + -1;\n      bVar20 = *pbVar18 < *pbVar19;\n      bVar23 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    } while (bVar23);\n    bVar21 = false;\n    bVar20 = (!bVar20 && !bVar23) == bVar20;\n    if (bVar20) {\nLAB_000ad8a8:\n      os->field_0x91 = os->field_0x91 | 4;\n    }\n    else {\n      iVar16 = 0xc;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar16 == 0) break;\n        iVar16 = iVar16 + -1;\n        bVar21 = *pbVar18 < *pbVar19;\n        bVar20 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar20);\n      if ((!bVar21 && !bVar20) == bVar21) goto LAB_000ad8a8;\n      bVar20 = false;\n      bVar23 = *(char *)(iVar15 + 0xad5) == '\0';\n      if (bVar23) {\n        iVar16 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (!bVar20) {\n          iVar16 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar20 = *(char *)(iVar15 + 0x3ced) == '\0';\n    if (((!bVar20) && (bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20))\n       && (bVar20 = this->section_ordering_specified_ == false, bVar20)) {\n      bVar23 = false;\n      bVar20 = *(char *)(iVar15 + 0x318d) == '\0';\n      if (bVar20) {\n        iVar16 = 6;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar23 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar20 = (!bVar23 && !bVar20) == bVar23;\n        if (bVar20) {\n          puVar2 = &os->field_0x91;\n          *puVar2 = *puVar2 | 4;\n          bVar20 = *puVar2 == '\0';\n        }\n      }\n    }\n  }\n  else {\n    bVar20 = iVar15 == 0;\n    if (bVar20) goto LAB_000adfbd;\n  }" if (parenthesized_expression "((pSVar7->script_sections_).saw_sections_clause_ == false)" ( (binary_expression "(pSVar7->script_sections_).saw_sections_clause_ == false" (field_expression "(pSVar7->script_sections_).saw_sections_clause_" (parenthesized_expression "(pSVar7->script_sections_)" ( (field_expression "pSVar7->script_sections_" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n    if (iVar15 == 0) {\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x5c,(char *)(unaff_EDI + 0x1a8e6f));\n    }\n    bVar20 = false;\n    bVar23 = *(char *)(iVar15 + 0x318d) == '\0';\n    if (!bVar23) goto LAB_000ad8b2;\n    iVar16 = 0xc;\n    pbVar18 = (byte *)name;\n    pbVar19 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar16 == 0) break;\n      iVar16 = iVar16 + -1;\n      bVar20 = *pbVar18 < *pbVar19;\n      bVar23 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    } while (bVar23);\n    bVar21 = false;\n    bVar20 = (!bVar20 && !bVar23) == bVar20;\n    if (bVar20) {\nLAB_000ad8a8:\n      os->field_0x91 = os->field_0x91 | 4;\n    }\n    else {\n      iVar16 = 0xc;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar16 == 0) break;\n        iVar16 = iVar16 + -1;\n        bVar21 = *pbVar18 < *pbVar19;\n        bVar20 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar20);\n      if ((!bVar21 && !bVar20) == bVar21) goto LAB_000ad8a8;\n      bVar20 = false;\n      bVar23 = *(char *)(iVar15 + 0xad5) == '\0';\n      if (bVar23) {\n        iVar16 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (!bVar20) {\n          iVar16 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar20 = *(char *)(iVar15 + 0x3ced) == '\0';\n    if (((!bVar20) && (bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20))\n       && (bVar20 = this->section_ordering_specified_ == false, bVar20)) {\n      bVar23 = false;\n      bVar20 = *(char *)(iVar15 + 0x318d) == '\0';\n      if (bVar20) {\n        iVar16 = 6;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar23 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar20 = (!bVar23 && !bVar20) == bVar23;\n        if (bVar20) {\n          puVar2 = &os->field_0x91;\n          *puVar2 = *puVar2 | 4;\n          bVar20 = *puVar2 == '\0';\n        }\n      }\n    }\n  }" { (if_statement "if (iVar15 == 0) {\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x5c,(char *)(unaff_EDI + 0x1a8e6f));\n    }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x5c,(char *)(unaff_EDI + 0x1a8e6f));\n    }" { (labeled_statement "LAB_000adfbd:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x5c,(char *)(unaff_EDI + 0x1a8e6f));" statement_identifier : comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x5c,(char *)(unaff_EDI + 0x1a8e6f));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x5c,(char *)(unaff_EDI + 0x1a8e6f))" identifier (argument_list "((char *)(unaff_EDI + 0x198bb4),0x5c,(char *)(unaff_EDI + 0x1a8e6f))" ( (cast_expression "(char *)(unaff_EDI + 0x198bb4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x198bb4)" ( (binary_expression "unaff_EDI + 0x198bb4" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1a8e6f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a8e6f)" ( (binary_expression "unaff_EDI + 0x1a8e6f" identifier + number_literal) ))) ))) ;)) })) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar23 = *(char *)(iVar15 + 0x318d) == '\0';" (assignment_expression "bVar23 = *(char *)(iVar15 + 0x318d) == '\0'" identifier = (binary_expression "*(char *)(iVar15 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar15 + 0x318d)" * (cast_expression "(char *)(iVar15 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x318d)" ( (binary_expression "iVar15 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar23) goto LAB_000ad8b2;" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (goto_statement "goto LAB_000ad8b2;" goto statement_identifier ;)) (expression_statement "iVar16 = 0xc;" (assignment_expression "iVar16 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = &DAT_001a7af8 + unaff_EDI;" (assignment_expression "pbVar19 = &DAT_001a7af8 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af8 + unaff_EDI" (pointer_expression "&DAT_001a7af8" & identifier) + identifier)) ;) (do_statement "do {\n      if (iVar16 == 0) break;\n      iVar16 = iVar16 + -1;\n      bVar20 = *pbVar18 < *pbVar19;\n      bVar23 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    } while (bVar23);" do (compound_statement "{\n      if (iVar16 == 0) break;\n      iVar16 = iVar16 + -1;\n      bVar20 = *pbVar18 < *pbVar19;\n      bVar23 = *pbVar18 == *pbVar19;\n      pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n      pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n    }" { (if_statement "if (iVar16 == 0) break;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar16 = iVar16 + -1;" (assignment_expression "iVar16 = iVar16 + -1" identifier = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar18 < *pbVar19;" (assignment_expression "bVar20 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar20 = (!bVar20 && !bVar23) == bVar20;" (assignment_expression "bVar20 = (!bVar20 && !bVar23) == bVar20" identifier = (binary_expression "(!bVar20 && !bVar23) == bVar20" (parenthesized_expression "(!bVar20 && !bVar23)" ( (binary_expression "!bVar20 && !bVar23" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar20) {\nLAB_000ad8a8:\n      os->field_0x91 = os->field_0x91 | 4;\n    }\n    else {\n      iVar16 = 0xc;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar16 == 0) break;\n        iVar16 = iVar16 + -1;\n        bVar21 = *pbVar18 < *pbVar19;\n        bVar20 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar20);\n      if ((!bVar21 && !bVar20) == bVar21) goto LAB_000ad8a8;\n      bVar20 = false;\n      bVar23 = *(char *)(iVar15 + 0xad5) == '\0';\n      if (bVar23) {\n        iVar16 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (!bVar20) {\n          iVar16 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\nLAB_000ad8a8:\n      os->field_0x91 = os->field_0x91 | 4;\n    }" { (labeled_statement "LAB_000ad8a8:\n      os->field_0x91 = os->field_0x91 | 4;" statement_identifier : (expression_statement "os->field_0x91 = os->field_0x91 | 4;" (assignment_expression "os->field_0x91 = os->field_0x91 | 4" (field_expression "os->field_0x91" identifier -> field_identifier) = (binary_expression "os->field_0x91 | 4" (field_expression "os->field_0x91" identifier -> field_identifier) | number_literal)) ;)) }) (else_clause "else {\n      iVar16 = 0xc;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar16 == 0) break;\n        iVar16 = iVar16 + -1;\n        bVar21 = *pbVar18 < *pbVar19;\n        bVar20 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar20);\n      if ((!bVar21 && !bVar20) == bVar21) goto LAB_000ad8a8;\n      bVar20 = false;\n      bVar23 = *(char *)(iVar15 + 0xad5) == '\0';\n      if (bVar23) {\n        iVar16 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (!bVar20) {\n          iVar16 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" else (compound_statement "{\n      iVar16 = 0xc;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar16 == 0) break;\n        iVar16 = iVar16 + -1;\n        bVar21 = *pbVar18 < *pbVar19;\n        bVar20 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar20);\n      if ((!bVar21 && !bVar20) == bVar21) goto LAB_000ad8a8;\n      bVar20 = false;\n      bVar23 = *(char *)(iVar15 + 0xad5) == '\0';\n      if (bVar23) {\n        iVar16 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (!bVar20) {\n          iVar16 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" { (expression_statement "iVar16 = 0xc;" (assignment_expression "iVar16 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = (byte *)(unaff_EDI + 0x1a7b04);" (assignment_expression "pbVar19 = (byte *)(unaff_EDI + 0x1a7b04)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b04)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b04)" ( (binary_expression "unaff_EDI + 0x1a7b04" identifier + number_literal) )))) ;) (do_statement "do {\n        if (iVar16 == 0) break;\n        iVar16 = iVar16 + -1;\n        bVar21 = *pbVar18 < *pbVar19;\n        bVar20 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar20);" do (compound_statement "{\n        if (iVar16 == 0) break;\n        iVar16 = iVar16 + -1;\n        bVar21 = *pbVar18 < *pbVar19;\n        bVar20 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar16 == 0) break;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar16 = iVar16 + -1;" (assignment_expression "iVar16 = iVar16 + -1" identifier = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar18 < *pbVar19;" (assignment_expression "bVar21 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (if_statement "if ((!bVar21 && !bVar20) == bVar21) goto LAB_000ad8a8;" if (parenthesized_expression "((!bVar21 && !bVar20) == bVar21)" ( (binary_expression "(!bVar21 && !bVar20) == bVar21" (parenthesized_expression "(!bVar21 && !bVar20)" ( (binary_expression "!bVar21 && !bVar20" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_000ad8a8;" goto statement_identifier ;)) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar23 = *(char *)(iVar15 + 0xad5) == '\0';" (assignment_expression "bVar23 = *(char *)(iVar15 + 0xad5) == '\0'" identifier = (binary_expression "*(char *)(iVar15 + 0xad5) == '\0'" (pointer_expression "*(char *)(iVar15 + 0xad5)" * (cast_expression "(char *)(iVar15 + 0xad5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0xad5)" ( (binary_expression "iVar15 + 0xad5" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar23) {\n        iVar16 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (!bVar20) {\n          iVar16 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }" if (parenthesized_expression "(bVar23)" ( identifier )) (compound_statement "{\n        iVar16 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar21 = false;\n        bVar20 = (!bVar20 && !bVar23) == bVar20;\n        if (!bVar20) {\n          iVar16 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }" { (expression_statement "iVar16 = 7;" (assignment_expression "iVar16 = 7" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar19 = &DAT_001a7af1 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" & identifier) + identifier)) ;) (do_statement "do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);" do (compound_statement "{\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        }" { (if_statement "if (iVar16 == 0) break;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar16 = iVar16 + -1;" (assignment_expression "iVar16 = iVar16 + -1" identifier = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar18 < *pbVar19;" (assignment_expression "bVar20 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar20 = (!bVar20 && !bVar23) == bVar20;" (assignment_expression "bVar20 = (!bVar20 && !bVar23) == bVar20" identifier = (binary_expression "(!bVar20 && !bVar23) == bVar20" (parenthesized_expression "(!bVar20 && !bVar23)" ( (binary_expression "!bVar20 && !bVar23" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar20) {\n          iVar16 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;\n        }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n          iVar16 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;\n        }" { (expression_statement "iVar16 = 7;" (assignment_expression "iVar16 = 7" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar19 = (byte *)(unaff_EDI + 0x1a7b10)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b10)" ( (binary_expression "unaff_EDI + 0x1a7b10" identifier + number_literal) )))) ;) (do_statement "do {\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);" do (compound_statement "{\n            if (iVar16 == 0) break;\n            iVar16 = iVar16 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          }" { (if_statement "if (iVar16 == 0) break;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar16 = iVar16 + -1;" (assignment_expression "iVar16 = iVar16 + -1" identifier = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar18 < *pbVar19;" (assignment_expression "bVar21 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (if_statement "if ((!bVar21 && !bVar20) != bVar21) goto LAB_000ad8b2;" if (parenthesized_expression "((!bVar21 && !bVar20) != bVar21)" ( (binary_expression "(!bVar21 && !bVar20) != bVar21" (parenthesized_expression "(!bVar21 && !bVar20)" ( (binary_expression "!bVar21 && !bVar20" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad8b2;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000ad8a8;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000ad8b2:\n    bVar20 = *(char *)(iVar15 + 0x3ced) == '\0';" statement_identifier : (expression_statement "bVar20 = *(char *)(iVar15 + 0x3ced) == '\0';" (assignment_expression "bVar20 = *(char *)(iVar15 + 0x3ced) == '\0'" identifier = (binary_expression "*(char *)(iVar15 + 0x3ced) == '\0'" (pointer_expression "*(char *)(iVar15 + 0x3ced)" * (cast_expression "(char *)(iVar15 + 0x3ced)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x3ced)" ( (binary_expression "iVar15 + 0x3ced" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;)) (if_statement "if (((!bVar20) && (bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20))\n       && (bVar20 = this->section_ordering_specified_ == false, bVar20)) {\n      bVar23 = false;\n      bVar20 = *(char *)(iVar15 + 0x318d) == '\0';\n      if (bVar20) {\n        iVar16 = 6;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar23 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar20 = (!bVar23 && !bVar20) == bVar23;\n        if (bVar20) {\n          puVar2 = &os->field_0x91;\n          *puVar2 = *puVar2 | 4;\n          bVar20 = *puVar2 == '\0';\n        }\n      }\n    }" if (parenthesized_expression "(((!bVar20) && (bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20))\n       && (bVar20 = this->section_ordering_specified_ == false, bVar20))" ( (binary_expression "((!bVar20) && (bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20))\n       && (bVar20 = this->section_ordering_specified_ == false, bVar20)" (parenthesized_expression "((!bVar20) && (bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20))" ( (binary_expression "(!bVar20) && (bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20)" (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) && (parenthesized_expression "(bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20)" ( (comma_expression "bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false, bVar20" (assignment_expression "bVar20 = (pSVar7->script_sections_).saw_sections_clause_ == false" identifier = (binary_expression "(pSVar7->script_sections_).saw_sections_clause_ == false" (field_expression "(pSVar7->script_sections_).saw_sections_clause_" (parenthesized_expression "(pSVar7->script_sections_)" ( (field_expression "pSVar7->script_sections_" identifier -> field_identifier) )) . field_identifier) == false)) , identifier) ))) )) && (parenthesized_expression "(bVar20 = this->section_ordering_specified_ == false, bVar20)" ( (comma_expression "bVar20 = this->section_ordering_specified_ == false, bVar20" (assignment_expression "bVar20 = 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      bVar23 = false;\n      bVar20 = *(char *)(iVar15 + 0x318d) == '\0';\n      if (bVar20) {\n        iVar16 = 6;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar23 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar20 = (!bVar23 && !bVar20) == bVar23;\n        if (bVar20) {\n          puVar2 = &os->field_0x91;\n          *puVar2 = *puVar2 | 4;\n          bVar20 = *puVar2 == '\0';\n        }\n      }\n    }" { (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) (expression_statement "bVar20 = *(char *)(iVar15 + 0x318d) == '\0';" (assignment_expression "bVar20 = *(char *)(iVar15 + 0x318d) == '\0'" identifier = (binary_expression "*(char *)(iVar15 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar15 + 0x318d)" * (cast_expression "(char *)(iVar15 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x318d)" ( (binary_expression "iVar15 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar20) {\n        iVar16 = 6;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar23 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar20 = (!bVar23 && !bVar20) == bVar23;\n        if (bVar20) {\n          puVar2 = &os->field_0x91;\n          *puVar2 = *puVar2 | 4;\n          bVar20 = *puVar2 == '\0';\n        }\n      }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n        iVar16 = 6;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar23 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar20 = (!bVar23 && !bVar20) == bVar23;\n        if (bVar20) {\n          puVar2 = &os->field_0x91;\n          *puVar2 = *puVar2 | 4;\n          bVar20 = *puVar2 == '\0';\n        }\n      }" { (expression_statement "iVar16 = 6;" (assignment_expression "iVar16 = 6" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = &DAT_0019defb + unaff_EDI;" (assignment_expression "pbVar19 = &DAT_0019defb + unaff_EDI" identifier = (binary_expression "&DAT_0019defb + unaff_EDI" (pointer_expression "&DAT_0019defb" & identifier) + identifier)) ;) (do_statement "do {\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar23 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);" do (compound_statement "{\n          if (iVar16 == 0) break;\n          iVar16 = iVar16 + -1;\n          bVar23 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        }" { (if_statement "if (iVar16 == 0) break;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar16 = iVar16 + -1;" (assignment_expression "iVar16 = iVar16 + -1" identifier = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (expression_statement "bVar23 = *pbVar18 < *pbVar19;" (assignment_expression "bVar23 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (expression_statement "bVar20 = (!bVar23 && !bVar20) == bVar23;" (assignment_expression "bVar20 = (!bVar23 && !bVar20) == bVar23" identifier = (binary_expression "(!bVar23 && !bVar20) == bVar23" (parenthesized_expression "(!bVar23 && !bVar20)" ( (binary_expression "!bVar23 && !bVar20" (unary_expression "!bVar23" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar20) {\n          puVar2 = &os->field_0x91;\n          *puVar2 = *puVar2 | 4;\n          bVar20 = *puVar2 == '\0';\n        }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n          puVar2 = &os->field_0x91;\n          *puVar2 = *puVar2 | 4;\n          bVar20 = *puVar2 == '\0';\n        }" { (expression_statement "puVar2 = &os->field_0x91;" (assignment_expression "puVar2 = &os->field_0x91" identifier = (pointer_expression "&os->field_0x91" & (field_expression "os->field_0x91" identifier -> field_identifier))) ;) (expression_statement "*puVar2 = *puVar2 | 4;" (assignment_expression "*puVar2 = *puVar2 | 4" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | 4" (pointer_expression "*puVar2" * identifier) | number_literal)) ;) (expression_statement "bVar20 = *puVar2 == '\0';" (assignment_expression "bVar20 = *puVar2 == '\0'" identifier = (binary_expression "*puVar2 == '\0'" (pointer_expression "*puVar2" * identifier) == (char_literal "'\0'" ' escape_sequence '))) ;) })) })) })) }) (else_clause "else {\n    bVar20 = iVar15 == 0;\n    if (bVar20) goto LAB_000adfbd;\n  }" else (compound_statement "{\n    bVar20 = iVar15 == 0;\n    if (bVar20) goto LAB_000adfbd;\n  }" { (expression_statement "bVar20 = iVar15 == 0;" (assignment_expression "bVar20 = iVar15 == 0" identifier = (binary_expression "iVar15 == 0" identifier == number_literal)) ;) (if_statement "if (bVar20) goto LAB_000adfbd;" if (parenthesized_expression "(bVar20)" ( identifier )) (goto_statement "goto LAB_000adfbd;" goto statement_identifier ;)) }))) (expression_statement "local_38 = os;" (assignment_expression "local_38 = os" identifier = identifier) ;) (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) (expression_statement "iVar16 = 5;" (assignment_expression "iVar16 = 5" identifier = number_literal) ;) (expression_statement "pbVar18 = *(byte **)(iVar15 + 0x3820);" (assignment_expression "pbVar18 = *(byte **)(iVar15 + 0x3820)" identifier = (pointer_expression "*(byte **)(iVar15 + 0x3820)" * (cast_expression "(byte **)(iVar15 + 0x3820)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x3820)" ( (binary_expression "iVar15 + 0x3820" identifier + number_literal) ))))) ;) (expression_statement "pbVar19 = &DAT_001ab0cb + unaff_EDI;" (assignment_expression "pbVar19 = &DAT_001ab0cb + unaff_EDI" identifier = (binary_expression "&DAT_001ab0cb + unaff_EDI" (pointer_expression "&DAT_001ab0cb" & identifier) + identifier)) ;) (do_statement "do {\n    if (iVar16 == 0) break;\n    iVar16 = iVar16 + -1;\n    bVar23 = *pbVar18 < *pbVar19;\n    bVar20 = *pbVar18 == *pbVar19;\n    pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n    pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n  } while (bVar20);" do (compound_statement "{\n    if (iVar16 == 0) break;\n    iVar16 = iVar16 + -1;\n    bVar23 = *pbVar18 < *pbVar19;\n    bVar20 = *pbVar18 == *pbVar19;\n    pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n    pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n  }" { (if_statement "if (iVar16 == 0) break;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar16 = iVar16 + -1;" (assignment_expression "iVar16 = iVar16 + -1" identifier = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (expression_statement "bVar23 = *pbVar18 < *pbVar19;" (assignment_expression "bVar23 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (if_statement "if ((!bVar23 && !bVar20) == bVar23) {\n    os->field_0x91 = os->field_0x91 | 8;\n  }" if (parenthesized_expression "((!bVar23 && !bVar20) == bVar23)" ( (binary_expression "(!bVar23 && !bVar20) == bVar23" (parenthesized_expression "(!bVar23 && !bVar20)" ( (binary_expression "!bVar23 && !bVar20" (unary_expression "!bVar23" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) == identifier) )) (compound_statement "{\n    os->field_0x91 = os->field_0x91 | 8;\n  }" { (expression_statement "os->field_0x91 = os->field_0x91 | 8;" (assignment_expression "os->field_0x91 = os->field_0x91 | 8" (field_expression "os->field_0x91" identifier -> field_identifier) = (binary_expression "os->field_0x91 | 8" (field_expression "os->field_0x91" identifier -> field_identifier) | number_literal)) ;) })) (if_statement "if (type == 3) {\n    bVar20 = false;\n    bVar23 = this->have_stabstr_section_ == false;\n    if (bVar23) {\n      iVar15 = 5;\n      pbVar18 = (byte *)name;\n      pbVar19 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      if ((!bVar20 && !bVar23) == bVar20) {\n        sVar11 = strlen(name);\n        bVar20 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar23 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar15 = 4;\n        pbVar18 = (byte *)(name + (sVar11 - 3));\n        pbVar19 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        if ((!bVar20 && !bVar23) == bVar20) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }\n  }\n  else if ((type == 1) || (type == 8)) {\n    bVar20 = order < ORDER_NON_RELRO_FIRST;\n    bVar23 = order == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < order) ||\n       (bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20))\n    {\n      iVar15 = 10;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (!bVar20) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar23 = false;\n        bVar20 = (!bVar21 && !bVar20) == bVar21;\n        if (!bVar20) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(type == 3)" ( (binary_expression "type == 3" identifier == number_literal) )) (compound_statement "{\n    bVar20 = false;\n    bVar23 = this->have_stabstr_section_ == false;\n    if (bVar23) {\n      iVar15 = 5;\n      pbVar18 = (byte *)name;\n      pbVar19 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      if ((!bVar20 && !bVar23) == bVar20) {\n        sVar11 = strlen(name);\n        bVar20 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar23 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar15 = 4;\n        pbVar18 = (byte *)(name + (sVar11 - 3));\n        pbVar19 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        if ((!bVar20 && !bVar23) == bVar20) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }\n  }" { (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar23 = this->have_stabstr_section_ == false;" (assignment_expression "bVar23 = 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 (bVar23) {\n      iVar15 = 5;\n      pbVar18 = (byte *)name;\n      pbVar19 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      if ((!bVar20 && !bVar23) == bVar20) {\n        sVar11 = strlen(name);\n        bVar20 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar23 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar15 = 4;\n        pbVar18 = (byte *)(name + (sVar11 - 3));\n        pbVar19 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        if ((!bVar20 && !bVar23) == bVar20) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }" if (parenthesized_expression "(bVar23)" ( identifier )) (compound_statement "{\n      iVar15 = 5;\n      pbVar18 = (byte *)name;\n      pbVar19 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      if ((!bVar20 && !bVar23) == bVar20) {\n        sVar11 = strlen(name);\n        bVar20 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar23 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar15 = 4;\n        pbVar18 = (byte *)(name + (sVar11 - 3));\n        pbVar19 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        if ((!bVar20 && !bVar23) == bVar20) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }" { (expression_statement "iVar15 = 5;" (assignment_expression "iVar15 = 5" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = &DAT_0019deab + unaff_EDI;" (assignment_expression "pbVar19 = &DAT_0019deab + unaff_EDI" identifier = (binary_expression "&DAT_0019deab + unaff_EDI" (pointer_expression "&DAT_0019deab" & identifier) + identifier)) ;) (do_statement "do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);" do (compound_statement "{\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar18 < *pbVar19;" (assignment_expression "bVar20 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (if_statement "if ((!bVar20 && !bVar23) == bVar20) {\n        sVar11 = strlen(name);\n        bVar20 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar23 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar15 = 4;\n        pbVar18 = (byte *)(name + (sVar11 - 3));\n        pbVar19 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        if ((!bVar20 && !bVar23) == bVar20) {\n          this->have_stabstr_section_ = true;\n        }\n      }" if (parenthesized_expression "((!bVar20 && !bVar23) == bVar20)" ( (binary_expression "(!bVar20 && !bVar23) == bVar20" (parenthesized_expression "(!bVar20 && !bVar23)" ( (binary_expression "!bVar20 && !bVar23" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier) )) (compound_statement "{\n        sVar11 = strlen(name);\n        bVar20 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar23 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar15 = 4;\n        pbVar18 = (byte *)(name + (sVar11 - 3));\n        pbVar19 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        if ((!bVar20 && !bVar23) == bVar20) {\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 "bVar20 = (undefined1 *)0xffffffef < &stack0xffffffa4;" (assignment_expression "bVar20 = (undefined1 *)0xffffffef < &stack0xffffffa4" identifier = (binary_expression "(undefined1 *)0xffffffef < &stack0xffffffa4" (cast_expression "(undefined1 *)0xffffffef" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < (pointer_expression "&stack0xffffffa4" & identifier))) ;) (expression_statement "bVar23 = &stack0x00000000 == (undefined1 *)0x4c;" (assignment_expression "bVar23 = &stack0x00000000 == (undefined1 *)0x4c" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0x4c" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0x4c" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "iVar15 = 4;" (assignment_expression "iVar15 = 4" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)(name + (sVar11 - 3));" (assignment_expression "pbVar18 = (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 "pbVar19 = (byte *)(unaff_EDI + 0x1af75d);" (assignment_expression "pbVar19 = (byte *)(unaff_EDI + 0x1af75d)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1af75d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af75d)" ( (binary_expression "unaff_EDI + 0x1af75d" identifier + number_literal) )))) ;) (do_statement "do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);" do (compound_statement "{\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar20 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar18 < *pbVar19;" (assignment_expression "bVar20 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (if_statement "if ((!bVar20 && !bVar23) == bVar20) {\n          this->have_stabstr_section_ = true;\n        }" if (parenthesized_expression "((!bVar20 && !bVar23) == bVar20)" ( (binary_expression "(!bVar20 && !bVar23) == bVar20" (parenthesized_expression "(!bVar20 && !bVar23)" ( (binary_expression "!bVar20 && !bVar23" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == 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    bVar20 = order < ORDER_NON_RELRO_FIRST;\n    bVar23 = order == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < order) ||\n       (bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20))\n    {\n      iVar15 = 10;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (!bVar20) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar23 = false;\n        bVar20 = (!bVar21 && !bVar20) == bVar21;\n        if (!bVar20) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }\n        }\n      }\n    }\n  }" else (if_statement "if ((type == 1) || (type == 8)) {\n    bVar20 = order < ORDER_NON_RELRO_FIRST;\n    bVar23 = order == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < order) ||\n       (bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20))\n    {\n      iVar15 = 10;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (!bVar20) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar23 = false;\n        bVar20 = (!bVar21 && !bVar20) == bVar21;\n        if (!bVar20) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\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    bVar20 = order < ORDER_NON_RELRO_FIRST;\n    bVar23 = order == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < order) ||\n       (bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20))\n    {\n      iVar15 = 10;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (!bVar20) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar23 = false;\n        bVar20 = (!bVar21 && !bVar20) == bVar21;\n        if (!bVar20) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "bVar20 = order < ORDER_NON_RELRO_FIRST;" (assignment_expression "bVar20 = order < ORDER_NON_RELRO_FIRST" identifier = (binary_expression "order < ORDER_NON_RELRO_FIRST" identifier < identifier)) ;) (expression_statement "bVar23 = order == ORDER_NON_RELRO_FIRST;" (assignment_expression "bVar23 = order == ORDER_NON_RELRO_FIRST" identifier = (binary_expression "order == ORDER_NON_RELRO_FIRST" identifier == identifier)) ;) (if_statement "if ((ORDER_NON_RELRO_FIRST < order) ||\n       (bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20))\n    {\n      iVar15 = 10;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (!bVar20) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar23 = false;\n        bVar20 = (!bVar21 && !bVar20) == bVar21;\n        if (!bVar20) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((ORDER_NON_RELRO_FIRST < order) ||\n       (bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20))" ( (binary_expression "(ORDER_NON_RELRO_FIRST < order) ||\n       (bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20)" (parenthesized_expression "(ORDER_NON_RELRO_FIRST < order)" ( (binary_expression "ORDER_NON_RELRO_FIRST < order" identifier < identifier) )) || (parenthesized_expression "(bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20)" ( (comma_expression "bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0, !bVar20" (assignment_expression "bVar20 = (0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0" identifier = (binary_expression "(0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1) != 0" (parenthesized_expression "(0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1)" ( (binary_expression "0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)) & 1" (binary_expression "0x3020c2U >> (order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER))" number_literal >> (parenthesized_expression "(order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER))" ( (binary_expression "order & (ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)" identifier & (parenthesized_expression "(ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER)" ( (binary_expression "ORDER_LARGE_BSS|ORDER_DYNAMIC_LINKER" identifier | identifier) ))) ))) & number_literal) )) != number_literal)) , (unary_expression "!bVar20" ! identifier)) ))) )) (compound_statement "{\n      iVar15 = 10;\n      pbVar18 = (byte *)name;\n      pbVar19 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);\n      bVar21 = false;\n      bVar20 = (!bVar20 && !bVar23) == bVar20;\n      if (!bVar20) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar23 = false;\n        bVar20 = (!bVar21 && !bVar20) == bVar21;\n        if (!bVar20) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "iVar15 = 10;" (assignment_expression "iVar15 = 10" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = (byte *)(unaff_EDI + 0x1a0735);" (assignment_expression "pbVar19 = (byte *)(unaff_EDI + 0x1a0735)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a0735)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a0735)" ( (binary_expression "unaff_EDI + 0x1a0735" identifier + number_literal) )))) ;) (do_statement "do {\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      } while (bVar23);" do (compound_statement "{\n        if (iVar15 == 0) break;\n        iVar15 = iVar15 + -1;\n        bVar20 = *pbVar18 < *pbVar19;\n        bVar23 = *pbVar18 == *pbVar19;\n        pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n        pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n      }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar18 < *pbVar19;" (assignment_expression "bVar20 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar20 = (!bVar20 && !bVar23) == bVar20;" (assignment_expression "bVar20 = (!bVar20 && !bVar23) == bVar20" identifier = (binary_expression "(!bVar20 && !bVar23) == bVar20" (parenthesized_expression "(!bVar20 && !bVar23)" ( (binary_expression "!bVar20 && !bVar23" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar20) {\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar23 = false;\n        bVar20 = (!bVar21 && !bVar20) == bVar21;\n        if (!bVar20) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n        iVar15 = 7;\n        pbVar18 = (byte *)name;\n        pbVar19 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);\n        bVar23 = false;\n        bVar20 = (!bVar21 && !bVar20) == bVar21;\n        if (!bVar20) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }\n        }\n      }" { (expression_statement "iVar15 = 7;" (assignment_expression "iVar15 = 7" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar19 = &DAT_001a7af1 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" & identifier) + identifier)) ;) (do_statement "do {\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar20);" do (compound_statement "{\n          if (iVar15 == 0) break;\n          iVar15 = iVar15 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar20 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar18 < *pbVar19;" (assignment_expression "bVar21 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) (expression_statement "bVar20 = (!bVar21 && !bVar20) == bVar21;" (assignment_expression "bVar20 = (!bVar21 && !bVar20) == bVar21" identifier = (binary_expression "(!bVar21 && !bVar20) == bVar21" (parenthesized_expression "(!bVar21 && !bVar20)" ( (binary_expression "!bVar21 && !bVar20" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar20) {\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }\n        }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n          iVar15 = 7;\n          pbVar18 = (byte *)name;\n          pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);\n          bVar21 = false;\n          bVar20 = (!bVar23 && !bVar20) == bVar23;\n          if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }\n        }" { (expression_statement "iVar15 = 7;" (assignment_expression "iVar15 = 7" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar19 = (byte *)(unaff_EDI + 0x1a7b10)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b10)" ( (binary_expression "unaff_EDI + 0x1a7b10" identifier + number_literal) )))) ;) (do_statement "do {\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar20);" do (compound_statement "{\n            if (iVar15 == 0) break;\n            iVar15 = iVar15 + -1;\n            bVar23 = *pbVar18 < *pbVar19;\n            bVar20 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar23 = *pbVar18 < *pbVar19;" (assignment_expression "bVar23 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar20 = (!bVar23 && !bVar20) == bVar23;" (assignment_expression "bVar20 = (!bVar23 && !bVar20) == bVar23" identifier = (binary_expression "(!bVar23 && !bVar20) == bVar23" (parenthesized_expression "(!bVar23 && !bVar20)" ( (binary_expression "!bVar23 && !bVar20" (unary_expression "!bVar23" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar20) {\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n            iVar15 = 5;\n            pbVar18 = (byte *)name;\n            pbVar19 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);\n            if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }\n          }" { (expression_statement "iVar15 = 5;" (assignment_expression "iVar15 = 5" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = &DAT_001a7bb4 + unaff_EDI;" (assignment_expression "pbVar19 = &DAT_001a7bb4 + unaff_EDI" identifier = (binary_expression "&DAT_001a7bb4 + unaff_EDI" (pointer_expression "&DAT_001a7bb4" & identifier) + identifier)) ;) (do_statement "do {\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            } while (bVar20);" do (compound_statement "{\n              if (iVar15 == 0) break;\n              iVar15 = iVar15 + -1;\n              bVar21 = *pbVar18 < *pbVar19;\n              bVar20 = *pbVar18 == *pbVar19;\n              pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n              pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n            }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar18 < *pbVar19;" (assignment_expression "bVar21 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (if_statement "if ((!bVar21 && !bVar20) != bVar21) {\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }" if (parenthesized_expression "((!bVar21 && !bVar20) != bVar21)" ( (binary_expression "(!bVar21 && !bVar20) != bVar21" (parenthesized_expression "(!bVar21 && !bVar20)" ( (binary_expression "!bVar21 && !bVar20" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) != identifier) )) (compound_statement "{\n              iVar15 = 0xc;\n              puVar2 = &os->field_0x92;\n              bVar20 = false;\n              *puVar2 = *puVar2 | 0x40;\n              bVar23 = *puVar2 == '\0';\n              pbVar18 = (byte *)name;\n              pbVar19 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);\n              bVar21 = false;\n              bVar20 = (!bVar20 && !bVar23) == bVar20;\n              if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }\n              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;\n              local_38 = os;\n              *(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;\n            }" { (expression_statement "iVar15 = 0xc;" (assignment_expression "iVar15 = 0xc" identifier = number_literal) ;) (expression_statement "puVar2 = &os->field_0x92;" (assignment_expression "puVar2 = &os->field_0x92" identifier = (pointer_expression "&os->field_0x92" & (field_expression "os->field_0x92" identifier -> field_identifier))) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "*puVar2 = *puVar2 | 0x40;" (assignment_expression "*puVar2 = *puVar2 | 0x40" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | 0x40" (pointer_expression "*puVar2" * identifier) | number_literal)) ;) (expression_statement "bVar23 = *puVar2 == '\0';" (assignment_expression "bVar23 = *puVar2 == '\0'" identifier = (binary_expression "*puVar2 == '\0'" (pointer_expression "*puVar2" * identifier) == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = (byte *)(unaff_EDI + 0x1a6604);" (assignment_expression "pbVar19 = (byte *)(unaff_EDI + 0x1a6604)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a6604)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a6604)" ( (binary_expression "unaff_EDI + 0x1a6604" identifier + number_literal) )))) ;) (do_statement "do {\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              } while (bVar23);" do (compound_statement "{\n                if (iVar15 == 0) break;\n                iVar15 = iVar15 + -1;\n                bVar20 = *pbVar18 < *pbVar19;\n                bVar23 = *pbVar18 == *pbVar19;\n                pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n              }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar18 < *pbVar19;" (assignment_expression "bVar20 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar20 = (!bVar20 && !bVar23) == bVar20;" (assignment_expression "bVar20 = (!bVar20 && !bVar23) == bVar20" identifier = (binary_expression "(!bVar20 && !bVar23) == bVar20" (parenthesized_expression "(!bVar20 && !bVar23)" ( (binary_expression "!bVar20 && !bVar23" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar20) {\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }\n              else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                pOVar9->field_0x5 = 0;\n                pOVar9->is_big_endian_ = bVar20;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7);\nLAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                   ((Output_fill_debug_info *)pOVar9);\n              }" { (expression_statement "pOVar9 = (Output_fill *)operator_new(8);" (assignment_expression "pOVar9 = (Output_fill *)operator_new(8)" identifier = (cast_expression "(Output_fill *)operator_new(8)" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063)" (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 **)(unaff_EDI + 0x28d063)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x28d063)" ( (binary_expression "unaff_EDI + 0x28d063" identifier + number_literal) )))) ;) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }" { comment comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f))" identifier (argument_list "((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f))" ( (cast_expression "(char *)(unaff_EDI + 0x198bb4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x198bb4)" ( (binary_expression "unaff_EDI + 0x198bb4" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1a8e1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a8e1f)" ( (binary_expression "unaff_EDI + 0x1a8e1f" identifier + number_literal) ))) ))) ;) })) (expression_statement "bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);" (assignment_expression "bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" identifier = (pointer_expression "*(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" * (cast_expression "(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "pOVar9->field_0x5 = 0;" (assignment_expression "pOVar9->field_0x5 = 0" (field_expression "pOVar9->field_0x5" identifier -> field_identifier) = number_literal) ;) (expression_statement "pOVar9->is_big_endian_ = bVar20;" (assignment_expression "pOVar9->is_big_endian_ = bVar20" (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 **)(unaff_EDI + 0x286dc7);" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286dc7)" (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 **)(unaff_EDI + 0x286dc7)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x286dc7)" ( (binary_expression "unaff_EDI + 0x286dc7" identifier + number_literal) )))) ;) (labeled_statement "LAB_000ae026:\n                pOVar12->free_space_fill_ = pOVar9;" statement_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) ))) ;) }) (else_clause "else {\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }" else (compound_statement "{\n                iVar15 = 0xd;\n                pbVar18 = (byte *)name;\n                pbVar19 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                bVar23 = false;\n                bVar20 = (!bVar21 && !bVar20) == bVar21;\n                if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }\n                iVar15 = 0xc;\n                pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);\n                if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;\n                pOVar9 = (Output_fill *)operator_new(8);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }\n                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);\n                pOVar12->free_space_fill_ = pOVar9;\n                sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                   ((Output_fill_debug_line *)pOVar9);\n              }" { (expression_statement "iVar15 = 0xd;" (assignment_expression "iVar15 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)name;" (assignment_expression "pbVar18 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar19 = (byte *)(unaff_EDI + 0x1a6610);" (assignment_expression "pbVar19 = (byte *)(unaff_EDI + 0x1a6610)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a6610)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a6610)" ( (binary_expression "unaff_EDI + 0x1a6610" identifier + number_literal) )))) ;) (do_statement "do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);" do (compound_statement "{\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar21 = *pbVar18 < *pbVar19;\n                  bVar20 = *pbVar18 == *pbVar19;\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                  pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n                }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar18 < *pbVar19;" (assignment_expression "bVar21 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar20 = *pbVar18 == *pbVar19;" (assignment_expression "bVar20 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) (expression_statement "bVar20 = (!bVar21 && !bVar20) == bVar21;" (assignment_expression "bVar20 = (!bVar21 && !bVar20) == bVar21" identifier = (binary_expression "(!bVar21 && !bVar20) == bVar21" (parenthesized_expression "(!bVar21 && !bVar20)" ( (binary_expression "!bVar21 && !bVar20" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar20) {\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n                  pOVar9 = (Output_fill *)operator_new(8);\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }\n                  bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  pOVar9->field_0x5 = 1;\n                  pOVar9->is_big_endian_ = bVar20;\n                  ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7);\n                  goto LAB_000ae026;\n                }" { (expression_statement "pOVar9 = (Output_fill *)operator_new(8);" (assignment_expression "pOVar9 = (Output_fill *)operator_new(8)" identifier = (cast_expression "(Output_fill *)operator_new(8)" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063);" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x28d063)" (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 **)(unaff_EDI + 0x28d063)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x28d063)" ( (binary_expression "unaff_EDI + 0x28d063" identifier + number_literal) )))) ;) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */\n                    do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));\n                  }" { comment comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f))" identifier (argument_list "((char *)(unaff_EDI + 0x198bb4),0x69,\n                                        (char *)(unaff_EDI + 0x1a8e1f))" ( (cast_expression "(char *)(unaff_EDI + 0x198bb4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x198bb4)" ( (binary_expression "unaff_EDI + 0x198bb4" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1a8e1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a8e1f)" ( (binary_expression "unaff_EDI + 0x1a8e1f" identifier + number_literal) ))) ))) ;) })) (expression_statement "bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);" (assignment_expression "bVar20 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" identifier = (pointer_expression "*(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" * (cast_expression "(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "pOVar9->field_0x5 = 1;" (assignment_expression "pOVar9->field_0x5 = 1" (field_expression "pOVar9->field_0x5" identifier -> field_identifier) = number_literal) ;) (expression_statement "pOVar9->is_big_endian_ = bVar20;" (assignment_expression "pOVar9->is_big_endian_ = bVar20" (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 **)(unaff_EDI + 0x286dc7);" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                       (_func_int_varargs **)(unaff_EDI + 0x286dc7)" (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 **)(unaff_EDI + 0x286dc7)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x286dc7)" ( (binary_expression "unaff_EDI + 0x286dc7" identifier + number_literal) )))) ;) (goto_statement "goto LAB_000ae026;" goto statement_identifier ;) })) (expression_statement "iVar15 = 0xc;" (assignment_expression "iVar15 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9);" (assignment_expression "pbVar18 = (byte *)(unaff_EDI + 0x1a7bb9)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7bb9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7bb9)" ( (binary_expression "unaff_EDI + 0x1a7bb9" identifier + number_literal) )))) ;) (do_statement "do {\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                } while (bVar20);" do (compound_statement "{\n                  if (iVar15 == 0) break;\n                  iVar15 = iVar15 + -1;\n                  bVar23 = (byte)*name < *pbVar18;\n                  bVar20 = *name == *pbVar18;\n                  name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);\n                  pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n                }" { (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar23 = (byte)*name < *pbVar18;" (assignment_expression "bVar23 = (byte)*name < *pbVar18" identifier = (binary_expression "(byte)*name < *pbVar18" (binary_expression "(byte)*name" (parenthesized_expression "(byte)" ( identifier )) * identifier) < (pointer_expression "*pbVar18" * identifier))) ;) (expression_statement "bVar20 = *name == *pbVar18;" (assignment_expression "bVar20 = *name == *pbVar18" identifier = (binary_expression "*name == *pbVar18" (pointer_expression "*name" * identifier) == (pointer_expression "*pbVar18" * identifier))) ;) (expression_statement "name = (char *)((byte *)name + (uint)bVar24 * -2 + 1);" (assignment_expression "name = (char *)((byte *)name + (uint)bVar24 * -2 + 1)" identifier = (cast_expression "(char *)((byte *)name + (uint)bVar24 * -2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)name + (uint)bVar24 * -2 + 1)" ( (binary_expression "(byte *)name + (uint)bVar24 * -2 + 1" (binary_expression "(byte *)name + (uint)bVar24 * -2" (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (if_statement "if ((!bVar23 && !bVar20) != bVar23) goto LAB_000ad932;" if (parenthesized_expression "((!bVar23 && !bVar20) != bVar23)" ( (binary_expression "(!bVar23 && !bVar20) != bVar23" (parenthesized_expression "(!bVar23 && !bVar20)" ( (binary_expression "!bVar23 && !bVar20" (unary_expression "!bVar23" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad932;" goto statement_identifier ;)) (expression_statement "pOVar9 = (Output_fill *)operator_new(8);" (assignment_expression "pOVar9 = (Output_fill *)operator_new(8)" identifier = (cast_expression "(Output_fill *)operator_new(8)" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063);" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x28d063)" (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 **)(unaff_EDI + 0x28d063)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x28d063)" ( (binary_expression "unaff_EDI + 0x28d063" identifier + number_literal) )))) ;) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */\n                  do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));\n                }" { comment comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f))" identifier (argument_list "((char *)(unaff_EDI + 0x198bb4),0x69,\n                                      (char *)(unaff_EDI + 0x1a8e1f))" ( (cast_expression "(char *)(unaff_EDI + 0x198bb4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x198bb4)" ( (binary_expression "unaff_EDI + 0x198bb4" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1a8e1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a8e1f)" ( (binary_expression "unaff_EDI + 0x1a8e1f" identifier + number_literal) ))) ))) ;) })) (expression_statement "pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)\n                ;" (assignment_expression "pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (field_expression "pOVar9->is_big_endian_" identifier -> field_identifier) = (pointer_expression "*(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" * (cast_expression "(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf);" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)(unaff_EDI + 0x286ddf)" (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 **)(unaff_EDI + 0x286ddf)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x286ddf)" ( (binary_expression "unaff_EDI + 0x286ddf" identifier + number_literal) )))) ;) (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 "*(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;" (assignment_expression "*(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10" (pointer_expression "*(size_t *)&(pOVar12->free_list_).min_hole_" * (cast_expression "(size_t *)&(pOVar12->free_list_).min_hole_" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar12->free_list_).min_hole_" & (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 "local_38 = os;" (assignment_expression "local_38 = os" identifier = identifier) ;) (expression_statement "*(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4)" * (cast_expression "(undefined4 *)((int)&(pOVar12->free_list_).min_hole_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar12->free_list_).min_hole_ + 4)" ( (binary_expression "(int)&(pOVar12->free_list_).min_hole_ + 4" (cast_expression "(int)&(pOVar12->free_list_).min_hole_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar12->free_list_).min_hole_" & (field_expression "(pOVar12->free_list_).min_hole_" (parenthesized_expression "(pOVar12->free_list_)" ( (field_expression "pOVar12->free_list_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = number_literal) ;) })) })) })) })) })) })))) (labeled_statement "LAB_000ad932:\n  if (this->sections_are_attached_ != false) {\n    if (*(Target **)(*(int *)pbVar1 + 0xc) == (Target *)0x0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f));\n    }\n    attach_section_to_segment(this,*(Target **)(*(int *)pbVar1 + 0xc),local_38);\n    local_38 = os;\n  }" statement_identifier : (if_statement "if (this->sections_are_attached_ != false) {\n    if (*(Target **)(*(int *)pbVar1 + 0xc) == (Target *)0x0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f));\n    }\n    attach_section_to_segment(this,*(Target **)(*(int *)pbVar1 + 0xc),local_38);\n    local_38 = 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 (*(Target **)(*(int *)pbVar1 + 0xc) == (Target *)0x0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f));\n    }\n    attach_section_to_segment(this,*(Target **)(*(int *)pbVar1 + 0xc),local_38);\n    local_38 = os;\n  }" { (if_statement "if (*(Target **)(*(int *)pbVar1 + 0xc) == (Target *)0x0) {\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f));\n    }" if (parenthesized_expression "(*(Target **)(*(int *)pbVar1 + 0xc) == (Target *)0x0)" ( (binary_expression "*(Target **)(*(int *)pbVar1 + 0xc) == (Target *)0x0" (pointer_expression "*(Target **)(*(int *)pbVar1 + 0xc)" * (cast_expression "(Target **)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "Target **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f));\n    }" { (labeled_statement "LAB_000ae083:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f));" statement_identifier : comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f))" identifier (argument_list "((char *)(unaff_EDI + 0x198bb4),0x69,(char *)(unaff_EDI + 0x1a8e1f))" ( (cast_expression "(char *)(unaff_EDI + 0x198bb4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x198bb4)" ( (binary_expression "unaff_EDI + 0x198bb4" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1a8e1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a8e1f)" ( (binary_expression "unaff_EDI + 0x1a8e1f" identifier + number_literal) ))) ))) ;)) })) (expression_statement "attach_section_to_segment(this,*(Target **)(*(int *)pbVar1 + 0xc),local_38);" (call_expression "attach_section_to_segment(this,*(Target **)(*(int *)pbVar1 + 0xc),local_38)" identifier (argument_list "(this,*(Target **)(*(int *)pbVar1 + 0xc),local_38)" ( identifier , (pointer_expression "*(Target **)(*(int *)pbVar1 + 0xc)" * (cast_expression "(Target **)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "Target **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) , identifier ))) ;) (expression_statement "local_38 = os;" (assignment_expression "local_38 = os" identifier = identifier) ;) }))) (return_statement "return local_38;" return identifier ;) }))
(translation_unit "int * FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)\n\n{\n  byte *pbVar1;\n  undefined1 uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  byte *pbVar11;\n  int unaff_EDI;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  int *local_20;\n  \n  bVar16 = 0;\n  FUN_00058c4a();\n  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;\n  uVar10 = param_4 & 2;\n  if (uVar10 != 0) goto LAB_000ad790;\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  bVar13 = false;\n  bVar15 = iVar8 == 0;\n  if (bVar15) goto LAB_000adfbd;\n  iVar7 = 5;\n  pbVar11 = *(byte **)(iVar8 + 0x99c);\n  pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);\n  do {\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }\n  else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    \n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }\n  if ((param_6 == 0) && (uVar10 != 0)) {\n    param_6 = FUN_000a9050();\n  }\n  local_20[0x17] = param_6;\n  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;\n  pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);\n  if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar3)();\n  }\n  puVar4 = *(undefined4 **)(param_1 + 0x134);\n  if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {\n    FUN_000b7440();\n  }\n  else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }\n  iVar8 = *(int *)(param_1 + 4);\n  iVar7 = *(int *)(*(int *)pbVar1 + 8);\n  if (*(char *)(iVar8 + 0xac) == '\0') {\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }\n  bVar15 = false;\n  iVar8 = 5;\n  pbVar11 = *(byte **)(iVar7 + 0x3820);\n  pbVar12 = &DAT_001ab0cb + unaff_EDI;\n  do {\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar13);\n  if ((!bVar15 && !bVar13) == bVar15) {\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }\n  if (param_3 == 3) {\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_000ad932:\n  if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }\n  return local_20;\n}\n\n" (function_definition "int * FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)\n\n{\n  byte *pbVar1;\n  undefined1 uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  byte *pbVar11;\n  int unaff_EDI;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  int *local_20;\n  \n  bVar16 = 0;\n  FUN_00058c4a();\n  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;\n  uVar10 = param_4 & 2;\n  if (uVar10 != 0) goto LAB_000ad790;\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  bVar13 = false;\n  bVar15 = iVar8 == 0;\n  if (bVar15) goto LAB_000adfbd;\n  iVar7 = 5;\n  pbVar11 = *(byte **)(iVar8 + 0x99c);\n  pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);\n  do {\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }\n  else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    \n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }\n  if ((param_6 == 0) && (uVar10 != 0)) {\n    param_6 = FUN_000a9050();\n  }\n  local_20[0x17] = param_6;\n  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;\n  pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);\n  if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar3)();\n  }\n  puVar4 = *(undefined4 **)(param_1 + 0x134);\n  if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {\n    FUN_000b7440();\n  }\n  else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }\n  iVar8 = *(int *)(param_1 + 4);\n  iVar7 = *(int *)(*(int *)pbVar1 + 8);\n  if (*(char *)(iVar8 + 0xac) == '\0') {\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }\n  bVar15 = false;\n  iVar8 = 5;\n  pbVar11 = *(byte **)(iVar7 + 0x3820);\n  pbVar12 = &DAT_001ab0cb + unaff_EDI;\n  do {\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar13);\n  if ((!bVar15 && !bVar13) == bVar15) {\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }\n  if (param_3 == 3) {\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_000ad932:\n  if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }\n  return local_20;\n}" primitive_type (pointer_declarator "* FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)" * (function_declarator "FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)" identifier (parameter_list "(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "char param_7" primitive_type identifier) )))) (compound_statement "{\n  byte *pbVar1;\n  undefined1 uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  byte *pbVar11;\n  int unaff_EDI;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  int *local_20;\n  \n  bVar16 = 0;\n  FUN_00058c4a();\n  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;\n  uVar10 = param_4 & 2;\n  if (uVar10 != 0) goto LAB_000ad790;\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  bVar13 = false;\n  bVar15 = iVar8 == 0;\n  if (bVar15) goto LAB_000adfbd;\n  iVar7 = 5;\n  pbVar11 = *(byte **)(iVar8 + 0x99c);\n  pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);\n  do {\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }\n  else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    \n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }\n  if ((param_6 == 0) && (uVar10 != 0)) {\n    param_6 = FUN_000a9050();\n  }\n  local_20[0x17] = param_6;\n  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;\n  pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);\n  if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar3)();\n  }\n  puVar4 = *(undefined4 **)(param_1 + 0x134);\n  if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {\n    FUN_000b7440();\n  }\n  else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }\n  iVar8 = *(int *)(param_1 + 4);\n  iVar7 = *(int *)(*(int *)pbVar1 + 8);\n  if (*(char *)(iVar8 + 0xac) == '\0') {\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }\n  bVar15 = false;\n  iVar8 = 5;\n  pbVar11 = *(byte **)(iVar7 + 0x3820);\n  pbVar12 = &DAT_001ab0cb + unaff_EDI;\n  do {\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar13);\n  if ((!bVar15 && !bVar13) == bVar15) {\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }\n  if (param_3 == 3) {\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_000ad932:\n  if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }\n  return local_20;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "FUN_00058c4a();" (call_expression "FUN_00058c4a()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;" (assignment_expression "pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2" identifier = (binary_expression "BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2" (binary_expression "BYTE_ARRAY_00291b75 + unaff_EDI" identifier + identifier) + number_literal)) ;) (expression_statement "uVar10 = param_4 & 2;" (assignment_expression "uVar10 = param_4 & 2" identifier = (binary_expression "param_4 & 2" identifier & number_literal)) ;) (if_statement "if (uVar10 != 0) goto LAB_000ad790;" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000ad790;" goto statement_identifier ;)) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = iVar8 == 0;" (assignment_expression "bVar15 = iVar8 == 0" identifier = (binary_expression "iVar8 == 0" identifier == number_literal)) ;) (if_statement "if (bVar15) goto LAB_000adfbd;" if (parenthesized_expression "(bVar15)" ( identifier )) (goto_statement "goto LAB_000adfbd;" goto statement_identifier ;)) (expression_statement "iVar7 = 5;" (assignment_expression "iVar7 = 5" identifier = number_literal) ;) (expression_statement "pbVar11 = *(byte **)(iVar8 + 0x99c);" (assignment_expression "pbVar11 = *(byte **)(iVar8 + 0x99c)" identifier = (pointer_expression "*(byte **)(iVar8 + 0x99c)" * (cast_expression "(byte **)(iVar8 + 0x99c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x99c)" ( (binary_expression "iVar8 + 0x99c" identifier + number_literal) ))))) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1ab8b3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1ab8b3)" ( (binary_expression "unaff_EDI + 0x1ab8b3" identifier + number_literal) )))) ;) (do_statement "do {\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar15);" do (compound_statement "{\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  }" { (if_statement "if (iVar7 == 0) break;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }\n  else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    \n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }" { (labeled_statement "LAB_000ad742:\n    bVar13 = false;" statement_identifier : (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;)) (expression_statement "bVar15 = *(char *)(iVar8 + 0x3561) == '\0';" (assignment_expression "bVar15 = *(char *)(iVar8 + 0x3561) == '\0'" identifier = (binary_expression "*(char *)(iVar8 + 0x3561) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x3561)" * (cast_expression "(char *)(iVar8 + 0x3561)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x3561)" ( (binary_expression "iVar8 + 0x3561" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }" { (labeled_statement "LAB_000ad790:\n      bVar13 = param_3 == 0;" statement_identifier : (expression_statement "bVar13 = param_3 == 0;" (assignment_expression "bVar13 = param_3 == 0" identifier = (binary_expression "param_3 == 0" identifier == number_literal)) ;)) (expression_statement "bVar15 = param_3 == 1;" (assignment_expression "bVar15 = param_3 == 1" identifier = (binary_expression "param_3 == 1" identifier == number_literal)) ;) (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" identifier = identifier) ;) (if_statement "if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }" { (expression_statement "iVar8 = 0xb;" (assignment_expression "iVar8 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar11 = &DAT_001a7af8 + unaff_EDI;" (assignment_expression "pbVar11 = &DAT_001a7af8 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af8 + unaff_EDI" (pointer_expression "&DAT_001a7af8" & identifier) + identifier)) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }" { (expression_statement "param_3 = 0xe;" (assignment_expression "param_3 = 0xe" identifier = number_literal) ;) (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" identifier = identifier) ;) }) (else_clause "else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }" else (compound_statement "{\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }" { (expression_statement "iVar8 = 0xe;" (assignment_expression "iVar8 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7b92)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b92)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b92)" ( (binary_expression "unaff_EDI + 0x1a7b92" identifier + number_literal) )))) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" do (compound_statement "{\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }" { (expression_statement "param_3 = 0x10;" (assignment_expression "param_3 = 0x10" identifier = number_literal) ;) (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" identifier = identifier) ;) }) (else_clause "else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }" else (compound_statement "{\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }" { (expression_statement "iVar8 = 0xb;" (assignment_expression "iVar8 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7b04)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b04)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b04)" ( (binary_expression "unaff_EDI + 0x1a7b04" identifier + number_literal) )))) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);" do (compound_statement "{\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "iVar8 = 0xf;" (assignment_expression "iVar8 = 0xf" identifier = number_literal) ;) (if_statement "if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }" if (parenthesized_expression "((!bVar15 && !bVar13) != bVar15)" ( (binary_expression "(!bVar15 && !bVar13) != bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (compound_statement "{\n              iVar8 = param_3;\n            }" { (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" identifier = identifier) ;) })) }))) }))) })) (expression_statement "param_3 = iVar8;" (assignment_expression "param_3 = iVar8" identifier = identifier) ;) (expression_statement "piVar5 = *(int **)(*(int *)pbVar1 + 0xc);" (assignment_expression "piVar5 = *(int **)(*(int *)pbVar1 + 0xc)" identifier = (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (piVar5 == (int *)0x0) goto LAB_000ae083;" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000ae083;" goto statement_identifier ;)) (expression_statement "local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);" (assignment_expression "local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4)" identifier = (cast_expression "(int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4)" (parenthesized_expression "(**(code **)(*piVar5 + 100))" ( (pointer_expression "**(code **)(*piVar5 + 100)" * (pointer_expression "*(code **)(*piVar5 + 100)" * (cast_expression "(code **)(*piVar5 + 100)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 100)" ( (binary_expression "*piVar5 + 100" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))))) ;) }) (else_clause "else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }" else (compound_statement "{\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }" { (expression_statement "iVar8 = 0xe;" (assignment_expression "iVar8 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7b84)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b84)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b84)" ( (binary_expression "unaff_EDI + 0x1a7b84" identifier + number_literal) )))) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }" { (expression_statement "local_20 = (int *)FUN_001aa8c0();" (assignment_expression "local_20 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_000e88d0(local_20,param_2,param_3,param_4);" (call_expression "FUN_000e88d0(local_20,param_2,param_3,param_4)" identifier (argument_list "(local_20,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_20[0x3a] = 0;" (assignment_expression "local_20[0x3a] = 0" (subscript_expression "local_20[0x3a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[0x3b] = 0;" (assignment_expression "local_20[0x3b] = 0" (subscript_expression "local_20[0x3b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*local_20 = unaff_EDI + 0x28dddb;" (assignment_expression "*local_20 = unaff_EDI + 0x28dddb" (pointer_expression "*local_20" * identifier) = (binary_expression "unaff_EDI + 0x28dddb" identifier + number_literal)) ;) (expression_statement "local_20[0x40] = (int)(local_20 + 0x3e);" (assignment_expression "local_20[0x40] = (int)(local_20 + 0x3e)" (subscript_expression "local_20[0x40]" identifier [ number_literal ]) = (cast_expression "(int)(local_20 + 0x3e)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_20 + 0x3e)" ( (binary_expression "local_20 + 0x3e" identifier + number_literal) )))) ;) (expression_statement "local_20[0x41] = (int)(local_20 + 0x3e);" (assignment_expression "local_20[0x41] = (int)(local_20 + 0x3e)" (subscript_expression "local_20[0x41]" identifier [ number_literal ]) = (cast_expression "(int)(local_20 + 0x3e)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_20 + 0x3e)" ( (binary_expression "local_20 + 0x3e" identifier + number_literal) )))) ;) (expression_statement "local_20[0x3c] = 0;" (assignment_expression "local_20[0x3c] = 0" (subscript_expression "local_20[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int **)(param_1 + 0x1a8) = local_20;" (assignment_expression "*(int **)(param_1 + 0x1a8) = local_20" (pointer_expression "*(int **)(param_1 + 0x1a8)" * (cast_expression "(int **)(param_1 + 0x1a8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1a8)" ( (binary_expression "param_1 + 0x1a8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x1ac);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x1ac)" identifier = (pointer_expression "*(int *)(param_1 + 0x1ac)" * (cast_expression "(int *)(param_1 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) ))))) ;) (expression_statement "local_20[0x3e] = 0;" (assignment_expression "local_20[0x3e] = 0" (subscript_expression "local_20[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[0x3f] = 0;" (assignment_expression "local_20[0x3f] = 0" (subscript_expression "local_20[0x3f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[0x42] = 0;" (assignment_expression "local_20[0x42] = 0" (subscript_expression "local_20[0x42]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(local_20 + 0x43) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x43) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x43)" * (cast_expression "(undefined1 *)(local_20 + 0x43)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x43)" ( (binary_expression "local_20 + 0x43" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_20[0x44] = 0;" (assignment_expression "local_20[0x44] = 0" (subscript_expression "local_20[0x44]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(local_20 + 0x45) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x45) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x45)" * (cast_expression "(undefined1 *)(local_20 + 0x45)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x45)" ( (binary_expression "local_20 + 0x45" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;" (assignment_expression "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }" { (expression_statement "*(int **)(iVar8 + 0xf4) = local_20;" (assignment_expression "*(int **)(iVar8 + 0xf4) = local_20" (pointer_expression "*(int **)(iVar8 + 0xf4)" * (cast_expression "(int **)(iVar8 + 0xf4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0xf4)" ( (binary_expression "iVar8 + 0xf4" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }" else (compound_statement "{\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }" { (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a6604);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a6604)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a6604)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a6604)" ( (binary_expression "unaff_EDI + 0x1a6604" identifier + number_literal) )))) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;" if (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad790;" goto statement_identifier ;)) (expression_statement "local_20 = (int *)FUN_001aa8c0();" (assignment_expression "local_20 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_000e88d0(local_20,param_2,param_3,param_4);" (call_expression "FUN_000e88d0(local_20,param_2,param_3,param_4)" identifier (argument_list "(local_20,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_20[0x3a] = 0;" (assignment_expression "local_20[0x3a] = 0" (subscript_expression "local_20[0x3a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(local_20 + 0x3e) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x3e) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x3e)" * (cast_expression "(undefined1 *)(local_20 + 0x3e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x3e)" ( (binary_expression "local_20 + 0x3e" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*local_20 = unaff_EDI + 0x28de37;" (assignment_expression "*local_20 = unaff_EDI + 0x28de37" (pointer_expression "*local_20" * identifier) = (binary_expression "unaff_EDI + 0x28de37" identifier + number_literal)) ;) (expression_statement "local_20[0x3b] = 0;" (assignment_expression "local_20[0x3b] = 0" (subscript_expression "local_20[0x3b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int **)(param_1 + 0x1ac) = local_20;" (assignment_expression "*(int **)(param_1 + 0x1ac) = local_20" (pointer_expression "*(int **)(param_1 + 0x1ac)" * (cast_expression "(int **)(param_1 + 0x1ac)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1ac)" ( (binary_expression "param_1 + 0x1ac" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x1a8);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x1a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x1a8)" * (cast_expression "(int *)(param_1 + 0x1a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a8)" ( (binary_expression "param_1 + 0x1a8" identifier + number_literal) ))))) ;) (expression_statement "local_20[0x3c] = 0;" (assignment_expression "local_20[0x3c] = 0" (subscript_expression "local_20[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;" (assignment_expression "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          local_20[0x3d] = iVar8;\n        }" { (expression_statement "local_20[0x3d] = iVar8;" (assignment_expression "local_20[0x3d] = iVar8" (subscript_expression "local_20[0x3d]" identifier [ number_literal ]) = identifier) ;) })) }))) }))) }) (else_clause "else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    \n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }" else (compound_statement "{\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    \n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }" { (expression_statement "iVar7 = 6;" (assignment_expression "iVar7 = 6" identifier = number_literal) ;) (expression_statement "pbVar11 = &DAT_0019de84 + unaff_EDI;" (assignment_expression "pbVar11 = &DAT_0019de84 + unaff_EDI" identifier = (binary_expression "&DAT_0019de84 + unaff_EDI" (pointer_expression "&DAT_0019de84" & identifier) + identifier)) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (do_statement "do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);" do (compound_statement "{\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    }" { (if_statement "if (iVar7 == 0) break;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;" if (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad742;" goto statement_identifier ;)) (expression_statement "local_20 = (int *)FUN_001aa8c0();" (assignment_expression "local_20 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_000e88d0(local_20,param_2,param_3,param_4);" (call_expression "FUN_000e88d0(local_20,param_2,param_3,param_4)" identifier (argument_list "(local_20,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_20[0x3d] = 0;" (assignment_expression "local_20[0x3d] = 0" (subscript_expression "local_20[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(local_20 + 0x3e) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x3e) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x3e)" * (cast_expression "(undefined1 *)(local_20 + 0x3e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x3e)" ( (binary_expression "local_20 + 0x3e" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*local_20 = unaff_EDI + 0x28e307;" (assignment_expression "*local_20 = unaff_EDI + 0x28e307" (pointer_expression "*local_20" * identifier) = (binary_expression "unaff_EDI + 0x28e307" identifier + number_literal)) ;) (expression_statement "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;" (assignment_expression "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" * (cast_expression "(byte *)(local_20 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 0x24)" ( (binary_expression "local_20 + 0x24" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_20[0x3a] = iVar8;" (assignment_expression "local_20[0x3a] = iVar8" (subscript_expression "local_20[0x3a]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_20[0x3c] = (int)(local_20 + 0x3e);" (assignment_expression "local_20[0x3c] = (int)(local_20 + 0x3e)" (subscript_expression "local_20[0x3c]" identifier [ number_literal ]) = (cast_expression "(int)(local_20 + 0x3e)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_20 + 0x3e)" ( (binary_expression "local_20 + 0x3e" identifier + number_literal) )))) ;) }))) (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" * (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" ( (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }" { (if_statement "if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000adfbd;" goto statement_identifier ;)) (if_statement "if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;" if (parenthesized_expression "(((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0))" ( (binary_expression "((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)" (parenthesized_expression "((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0)" ( (binary_expression "(uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0" (parenthesized_expression "(uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9))" ( (binary_expression "uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" (binary_expression "uVar10 != 0" identifier != number_literal) & (pointer_expression "*(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" * (cast_expression "(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) + 0x56b9" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) ))))) )) == number_literal) )) || (parenthesized_expression "((param_4 & 1) == 0)" ( (binary_expression "(param_4 & 1) == 0" (parenthesized_expression "(param_4 & 1)" ( (binary_expression "param_4 & 1" identifier & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_000ad7d9;" goto statement_identifier ;)) (if_statement "if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = (param_4 & 0x400) == 0;" (assignment_expression "bVar15 = (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 (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }" { (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a4b74)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a4b74)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a4b74)" ( (binary_expression "unaff_EDI + 0x1a4b74" identifier + number_literal) )))) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }" { (expression_statement "iVar8 = 0x13;" (assignment_expression "iVar8 = 0x13" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7ba1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7ba1)" ( (binary_expression "unaff_EDI + 0x1a7ba1" identifier + number_literal) )))) ;) (do_statement "do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" do (compound_statement "{\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }" { (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af1 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" & identifier) + identifier)) ;) (do_statement "do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);" do (compound_statement "{\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar15 && !bVar13) == bVar15;" (assignment_expression "bVar13 = (!bVar15 && !bVar13) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }" { (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b10)" ( (binary_expression "unaff_EDI + 0x1a7b10" identifier + number_literal) )))) ;) (do_statement "do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);" do (compound_statement "{\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;" if (parenthesized_expression "(((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))" ( (binary_expression "((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0)" (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) && (parenthesized_expression "(iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0)" ( (comma_expression "iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0" (assignment_expression "iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI)" identifier = (call_expression "strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI)" identifier (argument_list "((char *)param_2,&DAT_001a7bb4 + unaff_EDI)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "&DAT_001a7bb4 + unaff_EDI" (pointer_expression "&DAT_001a7bb4" & identifier) + identifier) )))) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000ad7d9;" goto statement_identifier ;)) })) })) })) })) }) (else_clause "else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;" else (if_statement "if (2 < param_3 - 0xeU) goto LAB_000ad7d9;" 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_000ad7d9;" goto statement_identifier ;)))) (labeled_statement "LAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;" statement_identifier : (expression_statement "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;" (assignment_expression "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)local_20 + 0x91) | 0x20" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;)) }) (else_clause "else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }" else (compound_statement "{\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }" { (labeled_statement "LAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;" statement_identifier : (if_statement "if (param_7 != '\0') goto LAB_000ad7e3;" if (parenthesized_expression "(param_7 != '\0')" ( (binary_expression "param_7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000ad7e3;" goto statement_identifier ;))) }))) (if_statement "if ((param_6 == 0) && (uVar10 != 0)) {\n    param_6 = FUN_000a9050();\n  }" if (parenthesized_expression "((param_6 == 0) && (uVar10 != 0))" ( (binary_expression "(param_6 == 0) && (uVar10 != 0)" (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    param_6 = FUN_000a9050();\n  }" { (expression_statement "param_6 = FUN_000a9050();" (assignment_expression "param_6 = FUN_000a9050()" identifier = (call_expression "FUN_000a9050()" identifier (argument_list "()" ( )))) ;) })) (expression_statement "local_20[0x17] = param_6;" (assignment_expression "local_20[0x17] = param_6" (subscript_expression "local_20[0x17]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;" if (parenthesized_expression "(*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0)" ( (binary_expression "*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0" (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000ae083;" goto statement_identifier ;)) (expression_statement "pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);" (assignment_expression "pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" identifier = (pointer_expression "*(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" * (cast_expression "(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" ( (binary_expression "**(int **)(*(int *)pbVar1 + 0xc) + 0xc" (pointer_expression "**(int **)(*(int *)pbVar1 + 0xc)" * (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar3)();\n  }" if (parenthesized_expression "(pcVar3 != (code *)(unaff_EDI + -0x58979))" ( (binary_expression "pcVar3 != (code *)(unaff_EDI + -0x58979)" identifier != (cast_expression "(code *)(unaff_EDI + -0x58979)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x58979)" ( (binary_expression "unaff_EDI + -0x58979" identifier + number_literal) )))) )) (compound_statement "{\n    (*pcVar3)();\n  }" { (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "puVar4 = *(undefined4 **)(param_1 + 0x134);" (assignment_expression "puVar4 = *(undefined4 **)(param_1 + 0x134)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x134)" * (cast_expression "(undefined4 **)(param_1 + 0x134)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x134)" ( (binary_expression "param_1 + 0x134" identifier + number_literal) ))))) ;) (if_statement "if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {\n    FUN_000b7440();\n  }\n  else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }" if (parenthesized_expression "(puVar4 == *(undefined4 **)(param_1 + 0x138))" ( (binary_expression "puVar4 == *(undefined4 **)(param_1 + 0x138)" identifier == (pointer_expression "*(undefined4 **)(param_1 + 0x138)" * (cast_expression "(undefined4 **)(param_1 + 0x138)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x138)" ( (binary_expression "param_1 + 0x138" identifier + number_literal) ))))) )) (compound_statement "{\n    FUN_000b7440();\n  }" { (expression_statement "FUN_000b7440();" (call_expression "FUN_000b7440()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }" else (compound_statement "{\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }" { (expression_statement "*puVar4 = local_20;" (assignment_expression "*puVar4 = local_20" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "*(undefined4 **)(param_1 + 0x134) = puVar4 + 1;" (assignment_expression "*(undefined4 **)(param_1 + 0x134) = puVar4 + 1" (pointer_expression "*(undefined4 **)(param_1 + 0x134)" * (cast_expression "(undefined4 **)(param_1 + 0x134)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x134)" ( (binary_expression "param_1 + 0x134" identifier + number_literal) )))) = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }))) (expression_statement "iVar8 = *(int *)(param_1 + 4);" (assignment_expression "iVar8 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar7 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar8 + 0xac) == '\0') {\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }" if (parenthesized_expression "(*(char *)(iVar8 + 0xac) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar8 + 0xac)" * (cast_expression "(char *)(iVar8 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xac)" ( (binary_expression "iVar8 + 0xac" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }" { (if_statement "if (iVar7 == 0) {\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }" { (labeled_statement "LAB_000adfbd:\n                    \n      FUN_0008b620();" statement_identifier : (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = *(char *)(iVar7 + 0x318d) == '\0';" (assignment_expression "bVar15 = *(char *)(iVar7 + 0x318d) == '\0'" identifier = (binary_expression "*(char *)(iVar7 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x318d)" * (cast_expression "(char *)(iVar7 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x318d)" ( (binary_expression "iVar7 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar15) goto LAB_000ad8b2;" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (goto_statement "goto LAB_000ad8b2;" goto statement_identifier ;)) (expression_statement "iVar9 = 0xc;" (assignment_expression "iVar9 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_001a7af8 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af8 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af8 + unaff_EDI" (pointer_expression "&DAT_001a7af8" & identifier) + identifier)) ;) (do_statement "do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);" do (compound_statement "{\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    }" { (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }" { (labeled_statement "LAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;" statement_identifier : (expression_statement "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;" (assignment_expression "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)local_20 + 0x91) | 4" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;)) }) (else_clause "else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" else (compound_statement "{\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" { (expression_statement "iVar9 = 0xc;" (assignment_expression "iVar9 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b04)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b04)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b04)" ( (binary_expression "unaff_EDI + 0x1a7b04" identifier + number_literal) )))) ;) (do_statement "do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);" do (compound_statement "{\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" { (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;" if (parenthesized_expression "((!bVar14 && !bVar13) == bVar14)" ( (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_000ad8a8;" goto statement_identifier ;)) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = *(char *)(iVar7 + 0xad5) == '\0';" (assignment_expression "bVar15 = *(char *)(iVar7 + 0xad5) == '\0'" identifier = (binary_expression "*(char *)(iVar7 + 0xad5) == '\0'" (pointer_expression "*(char *)(iVar7 + 0xad5)" * (cast_expression "(char *)(iVar7 + 0xad5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xad5)" ( (binary_expression "iVar7 + 0xad5" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }" { (expression_statement "iVar9 = 7;" (assignment_expression "iVar9 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af1 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" & identifier) + identifier)) ;) (do_statement "do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }" { (expression_statement "iVar9 = 7;" (assignment_expression "iVar9 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b10)" ( (binary_expression "unaff_EDI + 0x1a7b10" identifier + number_literal) )))) ;) (do_statement "do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" do (compound_statement "{\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" { (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;" if (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad8b2;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000ad8a8;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';" statement_identifier : (expression_statement "bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';" (assignment_expression "bVar13 = *(char *)(iVar7 + 0x3ced) == '\0'" identifier = (binary_expression "*(char *)(iVar7 + 0x3ced) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x3ced)" * (cast_expression "(char *)(iVar7 + 0x3ced)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x3ced)" ( (binary_expression "iVar7 + 0x3ced" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;)) (if_statement "if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }" if (parenthesized_expression "(((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13))" ( (binary_expression "((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)" (parenthesized_expression "((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13))" ( (binary_expression "(!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)" (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) && (parenthesized_expression "(bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)" ( (comma_expression "bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13" (assignment_expression "bVar13 = *(char *)(iVar8 + 0xac) == '\0'" identifier = (binary_expression "*(char *)(iVar8 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar8 + 0xac)" * (cast_expression "(char *)(iVar8 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xac)" ( (binary_expression "iVar8 + 0xac" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) , identifier) ))) )) && (parenthesized_expression "(bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)" ( (comma_expression "bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13" (assignment_expression "bVar13 = *(char *)(param_1 + 0x1cd) == '\0'" identifier = (binary_expression "*(char *)(param_1 + 0x1cd) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1cd)" * (cast_expression "(char *)(param_1 + 0x1cd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1cd)" ( (binary_expression "param_1 + 0x1cd" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) , identifier) ))) )) (compound_statement "{\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }" { (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar13 = *(char *)(iVar7 + 0x318d) == '\0';" (assignment_expression "bVar13 = *(char *)(iVar7 + 0x318d) == '\0'" identifier = (binary_expression "*(char *)(iVar7 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x318d)" * (cast_expression "(char *)(iVar7 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x318d)" ( (binary_expression "iVar7 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }" { (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_0019defb + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_0019defb + unaff_EDI" identifier = (binary_expression "&DAT_0019defb + unaff_EDI" (pointer_expression "&DAT_0019defb" & identifier) + identifier)) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar13 = (!bVar15 && !bVar13) == bVar15;" (assignment_expression "bVar13 = (!bVar15 && !bVar13) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }" { (expression_statement "pbVar11 = (byte *)((int)local_20 + 0x91);" (assignment_expression "pbVar11 = (byte *)((int)local_20 + 0x91)" identifier = (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*pbVar11 = *pbVar11 | 4;" (assignment_expression "*pbVar11 = *pbVar11 | 4" (pointer_expression "*pbVar11" * identifier) = (binary_expression "*pbVar11 | 4" (pointer_expression "*pbVar11" * identifier) | number_literal)) ;) (expression_statement "bVar13 = *pbVar11 == 0;" (assignment_expression "bVar13 = *pbVar11 == 0" identifier = (binary_expression "*pbVar11 == 0" (pointer_expression "*pbVar11" * identifier) == number_literal)) ;) })) })) })) }) (else_clause "else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }" else (compound_statement "{\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }" { (expression_statement "bVar13 = iVar7 == 0;" (assignment_expression "bVar13 = iVar7 == 0" identifier = (binary_expression "iVar7 == 0" identifier == number_literal)) ;) (if_statement "if (bVar13) goto LAB_000adfbd;" if (parenthesized_expression "(bVar13)" ( identifier )) (goto_statement "goto LAB_000adfbd;" goto statement_identifier ;)) }))) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "iVar8 = 5;" (assignment_expression "iVar8 = 5" identifier = number_literal) ;) (expression_statement "pbVar11 = *(byte **)(iVar7 + 0x3820);" (assignment_expression "pbVar11 = *(byte **)(iVar7 + 0x3820)" identifier = (pointer_expression "*(byte **)(iVar7 + 0x3820)" * (cast_expression "(byte **)(iVar7 + 0x3820)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x3820)" ( (binary_expression "iVar7 + 0x3820" identifier + number_literal) ))))) ;) (expression_statement "pbVar12 = &DAT_001ab0cb + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001ab0cb + unaff_EDI" identifier = (binary_expression "&DAT_001ab0cb + unaff_EDI" (pointer_expression "&DAT_001ab0cb" & identifier) + identifier)) ;) (do_statement "do {\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar13);" do (compound_statement "{\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar13) == bVar15) {\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }" if (parenthesized_expression "((!bVar15 && !bVar13) == bVar15)" ( (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (compound_statement "{\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }" { (expression_statement "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;" (assignment_expression "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)local_20 + 0x91) | 8" (pointer_expression "*(byte *)((int)local_20 + 0x91)" * (cast_expression "(byte *)((int)local_20 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x91)" ( (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) (if_statement "if (param_3 == 3) {\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(param_3 == 3)" ( (binary_expression "param_3 == 3" identifier == number_literal) )) (compound_statement "{\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }" { (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = *(char *)(param_1 + 0x1cc) == '\0';" (assignment_expression "bVar15 = *(char *)(param_1 + 0x1cc) == '\0'" identifier = (binary_expression "*(char *)(param_1 + 0x1cc) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1cc)" * (cast_expression "(char *)(param_1 + 0x1cc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1cc)" ( (binary_expression "param_1 + 0x1cc" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }" { (expression_statement "iVar8 = 5;" (assignment_expression "iVar8 = 5" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_0019deab + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_0019deab + unaff_EDI" identifier = (binary_expression "&DAT_0019deab + unaff_EDI" (pointer_expression "&DAT_0019deab" & identifier) + identifier)) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }" if (parenthesized_expression "((!bVar13 && !bVar15) == bVar13)" ( (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }" { (expression_statement "sVar6 = strlen((char *)param_2);" (assignment_expression "sVar6 = 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 "bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;" (assignment_expression "bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4" identifier = (binary_expression "(undefined1 *)0xffffffef < &stack0xffffffa4" (cast_expression "(undefined1 *)0xffffffef" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < (pointer_expression "&stack0xffffffa4" & identifier))) ;) (expression_statement "bVar15 = &stack0x00000000 == (undefined1 *)0x4c;" (assignment_expression "bVar15 = &stack0x00000000 == (undefined1 *)0x4c" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0x4c" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0x4c" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "iVar8 = 4;" (assignment_expression "iVar8 = 4" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2 + (sVar6 - 3);" (assignment_expression "pbVar11 = param_2 + (sVar6 - 3)" identifier = (binary_expression "param_2 + (sVar6 - 3)" identifier + (parenthesized_expression "(sVar6 - 3)" ( (binary_expression "sVar6 - 3" identifier - number_literal) )))) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1af75d);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1af75d)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1af75d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af75d)" ( (binary_expression "unaff_EDI + 0x1af75d" identifier + number_literal) )))) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }" if (parenthesized_expression "((!bVar13 && !bVar15) == bVar13)" ( (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }" { (expression_statement "*(undefined1 *)(param_1 + 0x1cc) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x1cc) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x1cc)" * (cast_expression "(undefined1 *)(param_1 + 0x1cc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1cc)" ( (binary_expression "param_1 + 0x1cc" identifier + number_literal) )))) = number_literal) ;) })) })) })) }) (else_clause "else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }" else (if_statement "if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 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    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "bVar13 = param_6 < 0x15;" (assignment_expression "bVar13 = param_6 < 0x15" identifier = (binary_expression "param_6 < 0x15" identifier < number_literal)) ;) (expression_statement "bVar15 = param_6 == 0x15;" (assignment_expression "bVar15 = param_6 == 0x15" identifier = (binary_expression "param_6 == 0x15" identifier == number_literal)) ;) (if_statement "if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13))" ( (binary_expression "(0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)" (parenthesized_expression "(0x15 < param_6)" ( (binary_expression "0x15 < param_6" number_literal < identifier) )) || (parenthesized_expression "(bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)" ( (comma_expression "bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13" (assignment_expression "bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0" identifier = (binary_expression "(0x3020c2U >> (param_6 & 0x1f) & 1) != 0" (parenthesized_expression "(0x3020c2U >> (param_6 & 0x1f) & 1)" ( (binary_expression "0x3020c2U >> (param_6 & 0x1f) & 1" (binary_expression "0x3020c2U >> (param_6 & 0x1f)" number_literal >> (parenthesized_expression "(param_6 & 0x1f)" ( (binary_expression "param_6 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal)) , (unary_expression "!bVar13" ! identifier)) ))) )) (compound_statement "{\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "iVar8 = 10;" (assignment_expression "iVar8 = 10" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a0735);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a0735)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a0735)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a0735)" ( (binary_expression "unaff_EDI + 0x1a0735" identifier + number_literal) )))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }" { (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af1 + unaff_EDI" identifier = (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" & identifier) + identifier)) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }" { (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7b10)" ( (binary_expression "unaff_EDI + 0x1a7b10" identifier + number_literal) )))) ;) (do_statement "do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" do (compound_statement "{\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar15 && !bVar13) == bVar15;" (assignment_expression "bVar13 = (!bVar15 && !bVar13) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }" { (expression_statement "iVar8 = 5;" (assignment_expression "iVar8 = 5" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_001a7bb4 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7bb4 + unaff_EDI" identifier = (binary_expression "&DAT_001a7bb4 + unaff_EDI" (pointer_expression "&DAT_001a7bb4" & identifier) + identifier)) ;) (do_statement "do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);" do (compound_statement "{\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }" if (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (compound_statement "{\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }" { (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)((int)local_20 + 0x92);" (assignment_expression "pbVar11 = (byte *)((int)local_20 + 0x92)" identifier = (cast_expression "(byte *)((int)local_20 + 0x92)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x92)" ( (binary_expression "(int)local_20 + 0x92" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "*pbVar11 = *pbVar11 | 0x40;" (assignment_expression "*pbVar11 = *pbVar11 | 0x40" (pointer_expression "*pbVar11" * identifier) = (binary_expression "*pbVar11 | 0x40" (pointer_expression "*pbVar11" * identifier) | number_literal)) ;) (expression_statement "bVar15 = *pbVar11 == 0;" (assignment_expression "bVar15 = *pbVar11 == 0" identifier = (binary_expression "*pbVar11 == 0" (pointer_expression "*pbVar11" * identifier) == number_literal)) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a6604);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a6604)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a6604)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a6604)" ( (binary_expression "unaff_EDI + 0x1a6604" identifier + number_literal) )))) ;) (do_statement "do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);" do (compound_statement "{\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }" { (expression_statement "piVar5 = (int *)FUN_001aa8c0();" (assignment_expression "piVar5 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar5 = unaff_EDI + 0x28d063;" (assignment_expression "*piVar5 = unaff_EDI + 0x28d063" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x28d063" identifier + number_literal)) ;) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n                    \n                  FUN_0008b620();\n                }" { (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);" (assignment_expression "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" identifier = (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)piVar5 + 5) = 0;" (assignment_expression "*(undefined1 *)((int)piVar5 + 5) = 0" (pointer_expression "*(undefined1 *)((int)piVar5 + 5)" * (cast_expression "(undefined1 *)((int)piVar5 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 5)" ( (binary_expression "(int)piVar5 + 5" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(piVar5 + 1) = uVar2;" (assignment_expression "*(undefined1 *)(piVar5 + 1) = uVar2" (pointer_expression "*(undefined1 *)(piVar5 + 1)" * (cast_expression "(undefined1 *)(piVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 1)" ( (binary_expression "piVar5 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "*piVar5 = unaff_EDI + 0x286dc7;" (assignment_expression "*piVar5 = unaff_EDI + 0x286dc7" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x286dc7" identifier + number_literal)) ;) (labeled_statement "LAB_000ae026:\n                local_20[0x36] = (int)piVar5;" statement_identifier : (expression_statement "local_20[0x36] = (int)piVar5;" (assignment_expression "local_20[0x36] = (int)piVar5" (subscript_expression "local_20[0x36]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "iVar8 = FUN_000e6d80();" (assignment_expression "iVar8 = FUN_000e6d80()" identifier = (call_expression "FUN_000e6d80()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }" else (compound_statement "{\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }" { (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a6610);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a6610)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a6610)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a6610)" ( (binary_expression "unaff_EDI + 0x1a6610" identifier + number_literal) )))) ;) (do_statement "do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);" do (compound_statement "{\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }" { (expression_statement "piVar5 = (int *)FUN_001aa8c0();" (assignment_expression "piVar5 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar5 = unaff_EDI + 0x28d063;" (assignment_expression "*piVar5 = unaff_EDI + 0x28d063" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x28d063" identifier + number_literal)) ;) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n                    \n                    FUN_0008b620();\n                  }" { (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);" (assignment_expression "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" identifier = (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)piVar5 + 5) = 1;" (assignment_expression "*(undefined1 *)((int)piVar5 + 5) = 1" (pointer_expression "*(undefined1 *)((int)piVar5 + 5)" * (cast_expression "(undefined1 *)((int)piVar5 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 5)" ( (binary_expression "(int)piVar5 + 5" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(piVar5 + 1) = uVar2;" (assignment_expression "*(undefined1 *)(piVar5 + 1) = uVar2" (pointer_expression "*(undefined1 *)(piVar5 + 1)" * (cast_expression "(undefined1 *)(piVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 1)" ( (binary_expression "piVar5 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "*piVar5 = unaff_EDI + 0x286dc7;" (assignment_expression "*piVar5 = unaff_EDI + 0x286dc7" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x286dc7" identifier + number_literal)) ;) (goto_statement "goto LAB_000ae026;" goto statement_identifier ;) })) (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x1a7bb9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a7bb9)" ( (binary_expression "unaff_EDI + 0x1a7bb9" identifier + number_literal) )))) ;) (do_statement "do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);" do (compound_statement "{\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *param_2 < *pbVar11;" (assignment_expression "bVar15 = *param_2 < *pbVar11" identifier = (binary_expression "*param_2 < *pbVar11" (pointer_expression "*param_2" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar13 = *param_2 == *pbVar11;" (assignment_expression "bVar13 = *param_2 == *pbVar11" identifier = (binary_expression "*param_2 == *pbVar11" (pointer_expression "*param_2" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "param_2 = param_2 + (uint)bVar16 * -2 + 1;" (assignment_expression "param_2 = param_2 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "param_2 + (uint)bVar16 * -2 + 1" (binary_expression "param_2 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;" if (parenthesized_expression "((!bVar15 && !bVar13) != bVar15)" ( (binary_expression "(!bVar15 && !bVar13) != bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" ( (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000ad932;" goto statement_identifier ;)) (expression_statement "piVar5 = (int *)FUN_001aa8c0();" (assignment_expression "piVar5 = (int *)FUN_001aa8c0()" identifier = (cast_expression "(int *)FUN_001aa8c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar5 = unaff_EDI + 0x28d063;" (assignment_expression "*piVar5 = unaff_EDI + 0x28d063" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x28d063" identifier + number_literal)) ;) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n                    \n                  FUN_0008b620();\n                }" { (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);" (assignment_expression "*(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (pointer_expression "*(undefined1 *)(piVar5 + 1)" * (cast_expression "(undefined1 *)(piVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 1)" ( (binary_expression "piVar5 + 1" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*piVar5 = unaff_EDI + 0x286ddf;" (assignment_expression "*piVar5 = unaff_EDI + 0x286ddf" (pointer_expression "*piVar5" * identifier) = (binary_expression "unaff_EDI + 0x286ddf" identifier + number_literal)) ;) (expression_statement "local_20[0x36] = (int)piVar5;" (assignment_expression "local_20[0x36] = (int)piVar5" (subscript_expression "local_20[0x36]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar8 = FUN_000e6da0();" (assignment_expression "iVar8 = FUN_000e6da0()" identifier = (call_expression "FUN_000e6da0()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "local_20[0x34] = iVar8;" (assignment_expression "local_20[0x34] = iVar8" (subscript_expression "local_20[0x34]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_20[0x35] = 0;" (assignment_expression "local_20[0x35] = 0" (subscript_expression "local_20[0x35]" identifier [ number_literal ]) = number_literal) ;) })) })) })) })) })) })))) (labeled_statement "LAB_000ad932:\n  if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x1c5) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x1c5) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1c5)" * (cast_expression "(char *)(param_1 + 0x1c5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c5)" ( (binary_expression "param_1 + 0x1c5" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }" { (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" * (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0xc)" ( (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }" { (labeled_statement "LAB_000ae083:\n                    \n      FUN_0008b620();" statement_identifier : (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "FUN_000ad5f0();" (call_expression "FUN_000ad5f0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_20;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 )) ;) (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)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + 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 (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 = LIT) ;) (expression_statement (assignment_expression 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (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 (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 = LIT) ;) (expression_statement (assignment_expression 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (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 (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) ;) (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 = IDENT) ;) })) }))) }))) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (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 (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 ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (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 (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)) ;) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (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 (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (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 * IDENT) = (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (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 = (binary_expression (pointer_expression & IDENT) + 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 (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (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 * IDENT) = (binary_expression IDENT + 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 (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) + LIT) ))))) )) == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression 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 ( 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 )) ;) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 )) ;) (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 = (binary_expression (pointer_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 (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 (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) , (binary_expression (pointer_expression & IDENT) + IDENT) )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) })) })) })) })) }) (else_clause else (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) | LIT)) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;))) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) })) (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) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 ( ))) ;)) })) (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 = (binary_expression (pointer_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 (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 TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + 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) )) (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 = (binary_expression (pointer_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 (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + 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) )) (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 = (binary_expression (pointer_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 (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 TYPE) ) IDENT) + 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 = (binary_expression (pointer_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 (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 TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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 = (binary_expression (pointer_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 (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 = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) < (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 )) ;) (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 = (binary_expression (pointer_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 (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 )) ;) (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 = (binary_expression (pointer_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 (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 )) ;) (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 ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 )) ;) (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 ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int * FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)\n\n{\n  byte *pbVar1;\n  undefined1 uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  byte *pbVar11;\n  int unaff_EDI;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  int *local_20;\n  \n  bVar16 = 0;\n  FUN_00058c4a();\n  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;\n  uVar10 = param_4 & 2;\n  if (uVar10 != 0) goto LAB_000ad790;\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  bVar13 = false;\n  bVar15 = iVar8 == 0;\n  if (bVar15) goto LAB_000adfbd;\n  iVar7 = 5;\n  pbVar11 = *(byte **)(iVar8 + 0x99c);\n  pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);\n  do {\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }\n  else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    \n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }\n  if ((param_6 == 0) && (uVar10 != 0)) {\n    param_6 = FUN_000a9050();\n  }\n  local_20[0x17] = param_6;\n  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;\n  pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);\n  if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar3)();\n  }\n  puVar4 = *(undefined4 **)(param_1 + 0x134);\n  if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {\n    FUN_000b7440();\n  }\n  else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }\n  iVar8 = *(int *)(param_1 + 4);\n  iVar7 = *(int *)(*(int *)pbVar1 + 8);\n  if (*(char *)(iVar8 + 0xac) == '\0') {\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }\n  bVar15 = false;\n  iVar8 = 5;\n  pbVar11 = *(byte **)(iVar7 + 0x3820);\n  pbVar12 = &DAT_001ab0cb + unaff_EDI;\n  do {\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar13);\n  if ((!bVar15 && !bVar13) == bVar15) {\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }\n  if (param_3 == 3) {\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_000ad932:\n  if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }\n  return local_20;\n}" (primitive_type "int") (pointer_declarator "* FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)" (* "*") (function_declarator "FUN_000ad6b0(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)" (identifier "FUN_000ad6b0") (parameter_list "(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,\n                  uint param_6,char param_7)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (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 "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "char param_7" (primitive_type "char") (identifier "param_7")) () ")")))) (compound_statement "{\n  byte *pbVar1;\n  undefined1 uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  byte *pbVar11;\n  int unaff_EDI;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  int *local_20;\n  \n  bVar16 = 0;\n  FUN_00058c4a();\n  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;\n  uVar10 = param_4 & 2;\n  if (uVar10 != 0) goto LAB_000ad790;\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  bVar13 = false;\n  bVar15 = iVar8 == 0;\n  if (bVar15) goto LAB_000adfbd;\n  iVar7 = 5;\n  pbVar11 = *(byte **)(iVar8 + 0x99c);\n  pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);\n  do {\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }\n  else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    \n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }\n  if ((param_6 == 0) && (uVar10 != 0)) {\n    param_6 = FUN_000a9050();\n  }\n  local_20[0x17] = param_6;\n  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;\n  pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);\n  if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar3)();\n  }\n  puVar4 = *(undefined4 **)(param_1 + 0x134);\n  if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {\n    FUN_000b7440();\n  }\n  else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }\n  iVar8 = *(int *)(param_1 + 4);\n  iVar7 = *(int *)(*(int *)pbVar1 + 8);\n  if (*(char *)(iVar8 + 0xac) == '\0') {\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }\n  bVar15 = false;\n  iVar8 = 5;\n  pbVar11 = *(byte **)(iVar7 + 0x3820);\n  pbVar12 = &DAT_001ab0cb + unaff_EDI;\n  do {\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar13);\n  if ((!bVar15 && !bVar13) == bVar15) {\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }\n  if (param_3 == 3) {\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_000ad932:\n  if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }\n  return local_20;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "undefined1 uVar2;" (type_identifier "undefined1") (identifier "uVar2") (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "byte bVar16;" (type_identifier "byte") (identifier "bVar16") (; ";")) (declaration "int *local_20;" (primitive_type "int") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" (identifier "bVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00058c4a();" (call_expression "FUN_00058c4a()" (identifier "FUN_00058c4a") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;" (assignment_expression "pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2" (identifier "pbVar1") (= "=") (binary_expression "BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2" (binary_expression "BYTE_ARRAY_00291b75 + unaff_EDI" (identifier "BYTE_ARRAY_00291b75") (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0xc2"))) (; ";")) (expression_statement "uVar10 = param_4 & 2;" (assignment_expression "uVar10 = param_4 & 2" (identifier "uVar10") (= "=") (binary_expression "param_4 & 2" (identifier "param_4") (& "&") (number_literal "2"))) (; ";")) (if_statement "if (uVar10 != 0) goto LAB_000ad790;" (if "if") (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000ad790;" (goto "goto") (statement_identifier "LAB_000ad790") (; ";"))) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = iVar8 == 0;" (assignment_expression "bVar15 = iVar8 == 0" (identifier "bVar15") (= "=") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar15) goto LAB_000adfbd;" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (goto_statement "goto LAB_000adfbd;" (goto "goto") (statement_identifier "LAB_000adfbd") (; ";"))) (expression_statement "iVar7 = 5;" (assignment_expression "iVar7 = 5" (identifier "iVar7") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar11 = *(byte **)(iVar8 + 0x99c);" (assignment_expression "pbVar11 = *(byte **)(iVar8 + 0x99c)" (identifier "pbVar11") (= "=") (pointer_expression "*(byte **)(iVar8 + 0x99c)" (* "*") (cast_expression "(byte **)(iVar8 + 0x99c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x99c)" (( "(") (binary_expression "iVar8 + 0x99c" (identifier "iVar8") (+ "+") (number_literal "0x99c")) () ")"))))) (; ";")) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1ab8b3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1ab8b3)" (( "(") (binary_expression "unaff_EDI + 0x1ab8b3" (identifier "unaff_EDI") (+ "+") (number_literal "0x1ab8b3")) () ")")))) (; ";")) (do_statement "do {\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar15);" (do "do") (compound_statement "{\n    if (iVar7 == 0) break;\n    iVar7 = iVar7 + -1;\n    bVar13 = *pbVar11 < *pbVar12;\n    bVar15 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  }" ({ "{") (if_statement "if (iVar7 == 0) break;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" (identifier "bVar13") (= "=") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13"))) (; ";")) (if_statement "if (bVar13) {\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }\n  else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    \n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\nLAB_000ad742:\n    bVar13 = false;\n    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';\n    if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_000ad742:\n    bVar13 = false;" (statement_identifier "LAB_000ad742") (: ":") (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";"))) (expression_statement "bVar15 = *(char *)(iVar8 + 0x3561) == '\0';" (assignment_expression "bVar15 = *(char *)(iVar8 + 0x3561) == '\0'" (identifier "bVar15") (= "=") (binary_expression "*(char *)(iVar8 + 0x3561) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x3561)" (* "*") (cast_expression "(char *)(iVar8 + 0x3561)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x3561)" (( "(") (binary_expression "iVar8 + 0x3561" (identifier "iVar8") (+ "+") (number_literal "0x3561")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (bVar15) {\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }\n    else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\nLAB_000ad790:\n      bVar13 = param_3 == 0;\n      bVar15 = param_3 == 1;\n      iVar8 = param_3;\n      if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }\n      param_3 = iVar8;\n      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);\n      if (piVar5 == (int *)0x0) goto LAB_000ae083;\n      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);\n    }" ({ "{") (labeled_statement "LAB_000ad790:\n      bVar13 = param_3 == 0;" (statement_identifier "LAB_000ad790") (: ":") (expression_statement "bVar13 = param_3 == 0;" (assignment_expression "bVar13 = param_3 == 0" (identifier "bVar13") (= "=") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0"))) (; ";"))) (expression_statement "bVar15 = param_3 == 1;" (assignment_expression "bVar15 = param_3 == 1" (identifier "bVar15") (= "=") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1"))) (; ";")) (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" (identifier "iVar8") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (bVar15) {\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n        iVar8 = 0xb;\n        pbVar11 = &DAT_001a7af8 + unaff_EDI;\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "iVar8 = 0xb;" (assignment_expression "iVar8 = 0xb" (identifier "iVar8") (= "=") (number_literal "0xb")) (; ";")) (expression_statement "pbVar11 = &DAT_001a7af8 + unaff_EDI;" (assignment_expression "pbVar11 = &DAT_001a7af8 + unaff_EDI" (identifier "pbVar11") (= "=") (binary_expression "&DAT_001a7af8 + unaff_EDI" (pointer_expression "&DAT_001a7af8" (& "&") (identifier "DAT_001a7af8")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" (do "do") (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" (identifier "bVar13") (= "=") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13"))) (; ";")) (if_statement "if (bVar13) {\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }\n        else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n          param_3 = 0xe;\n          iVar8 = param_3;\n        }" ({ "{") (expression_statement "param_3 = 0xe;" (assignment_expression "param_3 = 0xe" (identifier "param_3") (= "=") (number_literal "0xe")) (; ";")) (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" (identifier "iVar8") (= "=") (identifier "param_3")) (; ";")) (} "}")) (else_clause "else {\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }" (else "else") (compound_statement "{\n          iVar8 = 0xe;\n          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);\n          pbVar12 = param_2;\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }\n        }" ({ "{") (expression_statement "iVar8 = 0xe;" (assignment_expression "iVar8 = 0xe" (identifier "iVar8") (= "=") (number_literal "0xe")) (; ";")) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7b92)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a7b92)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a7b92)" (( "(") (binary_expression "unaff_EDI + 0x1a7b92" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a7b92")) () ")")))) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" (do "do") (compound_statement "{\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" (identifier "bVar13") (= "=") (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" (( "(") (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar14"))) (; ";")) (if_statement "if (bVar13) {\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }\n          else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n            param_3 = 0x10;\n            iVar8 = param_3;\n          }" ({ "{") (expression_statement "param_3 = 0x10;" (assignment_expression "param_3 = 0x10" (identifier "param_3") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" (identifier "iVar8") (= "=") (identifier "param_3")) (; ";")) (} "}")) (else_clause "else {\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }" (else "else") (compound_statement "{\n            iVar8 = 0xb;\n            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);\n            pbVar12 = param_2;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            iVar8 = 0xf;\n            if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }\n          }" ({ "{") (expression_statement "iVar8 = 0xb;" (assignment_expression "iVar8 = 0xb" (identifier "iVar8") (= "=") (number_literal "0xb")) (; ";")) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7b04)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a7b04)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a7b04)" (( "(") (binary_expression "unaff_EDI + 0x1a7b04" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a7b04")) () ")")))) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);" (do "do") (compound_statement "{\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (expression_statement "iVar8 = 0xf;" (assignment_expression "iVar8 = 0xf" (identifier "iVar8") (= "=") (number_literal "0xf")) (; ";")) (if_statement "if ((!bVar15 && !bVar13) != bVar15) {\n              iVar8 = param_3;\n            }" (if "if") (parenthesized_expression "((!bVar15 && !bVar13) != bVar15)" (( "(") (binary_expression "(!bVar15 && !bVar13) != bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" (( "(") (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (!= "!=") (identifier "bVar15")) () ")")) (compound_statement "{\n              iVar8 = param_3;\n            }" ({ "{") (expression_statement "iVar8 = param_3;" (assignment_expression "iVar8 = param_3" (identifier "iVar8") (= "=") (identifier "param_3")) (; ";")) (} "}"))) (} "}")))) (} "}")))) (} "}"))) (expression_statement "param_3 = iVar8;" (assignment_expression "param_3 = iVar8" (identifier "param_3") (= "=") (identifier "iVar8")) (; ";")) (expression_statement "piVar5 = *(int **)(*(int *)pbVar1 + 0xc);" (assignment_expression "piVar5 = *(int **)(*(int *)pbVar1 + 0xc)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" (* "*") (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0xc)" (( "(") (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (piVar5 == (int *)0x0) goto LAB_000ae083;" (if "if") (parenthesized_expression "(piVar5 == (int *)0x0)" (( "(") (binary_expression "piVar5 == (int *)0x0" (identifier "piVar5") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000ae083;" (goto "goto") (statement_identifier "LAB_000ae083") (; ";"))) (expression_statement "local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);" (assignment_expression "local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4)" (identifier "local_20") (= "=") (cast_expression "(int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4)" (parenthesized_expression "(**(code **)(*piVar5 + 100))" (( "(") (pointer_expression "**(code **)(*piVar5 + 100)" (* "*") (pointer_expression "*(code **)(*piVar5 + 100)" (* "*") (cast_expression "(code **)(*piVar5 + 100)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 100)" (( "(") (binary_expression "*piVar5 + 100" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "100")) () ")"))))) () ")")) (argument_list "(piVar5,param_2,param_3,param_4)" (( "(") (identifier "piVar5") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }" (else "else") (compound_statement "{\n      iVar8 = 0xe;\n      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);\n      pbVar12 = param_2;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }\n    }" ({ "{") (expression_statement "iVar8 = 0xe;" (assignment_expression "iVar8 = 0xe" (identifier "iVar8") (= "=") (number_literal "0xe")) (; ";")) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7b84)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a7b84)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a7b84)" (( "(") (binary_expression "unaff_EDI + 0x1a7b84" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a7b84")) () ")")))) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" (do "do") (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" (identifier "bVar13") (= "=") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13"))) (; ";")) (if_statement "if (bVar13) {\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }\n      else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        local_20[0x3b] = 0;\n        *local_20 = unaff_EDI + 0x28dddb;\n        local_20[0x40] = (int)(local_20 + 0x3e);\n        local_20[0x41] = (int)(local_20 + 0x3e);\n        local_20[0x3c] = 0;\n        *(int **)(param_1 + 0x1a8) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1ac);\n        local_20[0x3e] = 0;\n        local_20[0x3f] = 0;\n        local_20[0x42] = 0;\n        *(undefined1 *)(local_20 + 0x43) = 0;\n        local_20[0x44] = 0;\n        *(undefined1 *)(local_20 + 0x45) = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }\n      }" ({ "{") (expression_statement "local_20 = (int *)FUN_001aa8c0();" (assignment_expression "local_20 = (int *)FUN_001aa8c0()" (identifier "local_20") (= "=") (cast_expression "(int *)FUN_001aa8c0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0()" (identifier "FUN_001aa8c0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_000e88d0(local_20,param_2,param_3,param_4);" (call_expression "FUN_000e88d0(local_20,param_2,param_3,param_4)" (identifier "FUN_000e88d0") (argument_list "(local_20,param_2,param_3,param_4)" (( "(") (identifier "local_20") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "local_20[0x3a] = 0;" (assignment_expression "local_20[0x3a] = 0" (subscript_expression "local_20[0x3a]" (identifier "local_20") ([ "[") (number_literal "0x3a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20[0x3b] = 0;" (assignment_expression "local_20[0x3b] = 0" (subscript_expression "local_20[0x3b]" (identifier "local_20") ([ "[") (number_literal "0x3b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_20 = unaff_EDI + 0x28dddb;" (assignment_expression "*local_20 = unaff_EDI + 0x28dddb" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (= "=") (binary_expression "unaff_EDI + 0x28dddb" (identifier "unaff_EDI") (+ "+") (number_literal "0x28dddb"))) (; ";")) (expression_statement "local_20[0x40] = (int)(local_20 + 0x3e);" (assignment_expression "local_20[0x40] = (int)(local_20 + 0x3e)" (subscript_expression "local_20[0x40]" (identifier "local_20") ([ "[") (number_literal "0x40") (] "]")) (= "=") (cast_expression "(int)(local_20 + 0x3e)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_20 + 0x3e)" (( "(") (binary_expression "local_20 + 0x3e" (identifier "local_20") (+ "+") (number_literal "0x3e")) () ")")))) (; ";")) (expression_statement "local_20[0x41] = (int)(local_20 + 0x3e);" (assignment_expression "local_20[0x41] = (int)(local_20 + 0x3e)" (subscript_expression "local_20[0x41]" (identifier "local_20") ([ "[") (number_literal "0x41") (] "]")) (= "=") (cast_expression "(int)(local_20 + 0x3e)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_20 + 0x3e)" (( "(") (binary_expression "local_20 + 0x3e" (identifier "local_20") (+ "+") (number_literal "0x3e")) () ")")))) (; ";")) (expression_statement "local_20[0x3c] = 0;" (assignment_expression "local_20[0x3c] = 0" (subscript_expression "local_20[0x3c]" (identifier "local_20") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int **)(param_1 + 0x1a8) = local_20;" (assignment_expression "*(int **)(param_1 + 0x1a8) = local_20" (pointer_expression "*(int **)(param_1 + 0x1a8)" (* "*") (cast_expression "(int **)(param_1 + 0x1a8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x1a8)" (( "(") (binary_expression "param_1 + 0x1a8" (identifier "param_1") (+ "+") (number_literal "0x1a8")) () ")")))) (= "=") (identifier "local_20")) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x1ac);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x1ac)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x1ac)" (* "*") (cast_expression "(int *)(param_1 + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1ac)" (( "(") (binary_expression "param_1 + 0x1ac" (identifier "param_1") (+ "+") (number_literal "0x1ac")) () ")"))))) (; ";")) (expression_statement "local_20[0x3e] = 0;" (assignment_expression "local_20[0x3e] = 0" (subscript_expression "local_20[0x3e]" (identifier "local_20") ([ "[") (number_literal "0x3e") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20[0x3f] = 0;" (assignment_expression "local_20[0x3f] = 0" (subscript_expression "local_20[0x3f]" (identifier "local_20") ([ "[") (number_literal "0x3f") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20[0x42] = 0;" (assignment_expression "local_20[0x42] = 0" (subscript_expression "local_20[0x42]" (identifier "local_20") ([ "[") (number_literal "0x42") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(local_20 + 0x43) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x43) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x43)" (* "*") (cast_expression "(undefined1 *)(local_20 + 0x43)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 0x43)" (( "(") (binary_expression "local_20 + 0x43" (identifier "local_20") (+ "+") (number_literal "0x43")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20[0x44] = 0;" (assignment_expression "local_20[0x44] = 0" (subscript_expression "local_20[0x44]" (identifier "local_20") ([ "[") (number_literal "0x44") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(local_20 + 0x45) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x45) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x45)" (* "*") (cast_expression "(undefined1 *)(local_20 + 0x45)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 0x45)" (( "(") (binary_expression "local_20 + 0x45" (identifier "local_20") (+ "+") (number_literal "0x45")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;" (assignment_expression "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" (* "*") (cast_expression "(byte *)(local_20 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 0x24)" (( "(") (binary_expression "local_20 + 0x24" (identifier "local_20") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (binary_expression "*(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" (* "*") (cast_expression "(byte *)(local_20 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 0x24)" (( "(") (binary_expression "local_20 + 0x24" (identifier "local_20") (+ "+") (number_literal "0x24")) () ")")))) (| "|") (number_literal "0x30"))) (; ";")) (if_statement "if (iVar8 != 0) {\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(int **)(iVar8 + 0xf4) = local_20;\n        }" ({ "{") (expression_statement "*(int **)(iVar8 + 0xf4) = local_20;" (assignment_expression "*(int **)(iVar8 + 0xf4) = local_20" (pointer_expression "*(int **)(iVar8 + 0xf4)" (* "*") (cast_expression "(int **)(iVar8 + 0xf4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0xf4)" (( "(") (binary_expression "iVar8 + 0xf4" (identifier "iVar8") (+ "+") (number_literal "0xf4")) () ")")))) (= "=") (identifier "local_20")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }" (else "else") (compound_statement "{\n        iVar8 = 0xc;\n        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);\n        pbVar12 = param_2;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;\n        local_20 = (int *)FUN_001aa8c0();\n                    \n        FUN_000e88d0(local_20,param_2,param_3,param_4);\n        local_20[0x3a] = 0;\n        *(undefined1 *)(local_20 + 0x3e) = 0;\n        *local_20 = unaff_EDI + 0x28de37;\n        local_20[0x3b] = 0;\n        *(int **)(param_1 + 0x1ac) = local_20;\n        iVar8 = *(int *)(param_1 + 0x1a8);\n        local_20[0x3c] = 0;\n        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n        if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }\n      }" ({ "{") (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" (identifier "iVar8") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a6604);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a6604)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a6604)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a6604)" (( "(") (binary_expression "unaff_EDI + 0x1a6604" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a6604")) () ")")))) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);" (do "do") (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;" (if "if") (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" (( "(") (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" (( "(") (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (!= "!=") (identifier "bVar14")) () ")")) (goto_statement "goto LAB_000ad790;" (goto "goto") (statement_identifier "LAB_000ad790") (; ";"))) (expression_statement "local_20 = (int *)FUN_001aa8c0();" (assignment_expression "local_20 = (int *)FUN_001aa8c0()" (identifier "local_20") (= "=") (cast_expression "(int *)FUN_001aa8c0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0()" (identifier "FUN_001aa8c0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_000e88d0(local_20,param_2,param_3,param_4);" (call_expression "FUN_000e88d0(local_20,param_2,param_3,param_4)" (identifier "FUN_000e88d0") (argument_list "(local_20,param_2,param_3,param_4)" (( "(") (identifier "local_20") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "local_20[0x3a] = 0;" (assignment_expression "local_20[0x3a] = 0" (subscript_expression "local_20[0x3a]" (identifier "local_20") ([ "[") (number_literal "0x3a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(local_20 + 0x3e) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x3e) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x3e)" (* "*") (cast_expression "(undefined1 *)(local_20 + 0x3e)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 0x3e)" (( "(") (binary_expression "local_20 + 0x3e" (identifier "local_20") (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_20 = unaff_EDI + 0x28de37;" (assignment_expression "*local_20 = unaff_EDI + 0x28de37" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (= "=") (binary_expression "unaff_EDI + 0x28de37" (identifier "unaff_EDI") (+ "+") (number_literal "0x28de37"))) (; ";")) (expression_statement "local_20[0x3b] = 0;" (assignment_expression "local_20[0x3b] = 0" (subscript_expression "local_20[0x3b]" (identifier "local_20") ([ "[") (number_literal "0x3b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int **)(param_1 + 0x1ac) = local_20;" (assignment_expression "*(int **)(param_1 + 0x1ac) = local_20" (pointer_expression "*(int **)(param_1 + 0x1ac)" (* "*") (cast_expression "(int **)(param_1 + 0x1ac)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x1ac)" (( "(") (binary_expression "param_1 + 0x1ac" (identifier "param_1") (+ "+") (number_literal "0x1ac")) () ")")))) (= "=") (identifier "local_20")) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x1a8);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x1a8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x1a8)" (* "*") (cast_expression "(int *)(param_1 + 0x1a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1a8)" (( "(") (binary_expression "param_1 + 0x1a8" (identifier "param_1") (+ "+") (number_literal "0x1a8")) () ")"))))) (; ";")) (expression_statement "local_20[0x3c] = 0;" (assignment_expression "local_20[0x3c] = 0" (subscript_expression "local_20[0x3c]" (identifier "local_20") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;" (assignment_expression "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" (* "*") (cast_expression "(byte *)(local_20 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 0x24)" (( "(") (binary_expression "local_20 + 0x24" (identifier "local_20") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (binary_expression "*(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" (* "*") (cast_expression "(byte *)(local_20 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 0x24)" (( "(") (binary_expression "local_20 + 0x24" (identifier "local_20") (+ "+") (number_literal "0x24")) () ")")))) (| "|") (number_literal "0x30"))) (; ";")) (if_statement "if (iVar8 != 0) {\n          local_20[0x3d] = iVar8;\n        }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          local_20[0x3d] = iVar8;\n        }" ({ "{") (expression_statement "local_20[0x3d] = iVar8;" (assignment_expression "local_20[0x3d] = iVar8" (subscript_expression "local_20[0x3d]" (identifier "local_20") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    \n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }" (else "else") (compound_statement "{\n    iVar7 = 6;\n    pbVar11 = &DAT_0019de84 + unaff_EDI;\n    pbVar12 = param_2;\n    do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;\n    local_20 = (int *)FUN_001aa8c0();\n                    \n    FUN_000e88d0(local_20,param_2,param_3,param_4);\n    local_20[0x3d] = 0;\n    *(undefined1 *)(local_20 + 0x3e) = 0;\n    *local_20 = unaff_EDI + 0x28e307;\n    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;\n    local_20[0x3a] = iVar8;\n    local_20[0x3c] = (int)(local_20 + 0x3e);\n  }" ({ "{") (expression_statement "iVar7 = 6;" (assignment_expression "iVar7 = 6" (identifier "iVar7") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar11 = &DAT_0019de84 + unaff_EDI;" (assignment_expression "pbVar11 = &DAT_0019de84 + unaff_EDI" (identifier "pbVar11") (= "=") (binary_expression "&DAT_0019de84 + unaff_EDI" (pointer_expression "&DAT_0019de84" (& "&") (identifier "DAT_0019de84")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar13);" (do "do") (compound_statement "{\n      if (iVar7 == 0) break;\n      iVar7 = iVar7 + -1;\n      bVar14 = *pbVar11 < *pbVar12;\n      bVar13 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar7 == 0) break;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;" (if "if") (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" (( "(") (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" (( "(") (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (!= "!=") (identifier "bVar14")) () ")")) (goto_statement "goto LAB_000ad742;" (goto "goto") (statement_identifier "LAB_000ad742") (; ";"))) (expression_statement "local_20 = (int *)FUN_001aa8c0();" (assignment_expression "local_20 = (int *)FUN_001aa8c0()" (identifier "local_20") (= "=") (cast_expression "(int *)FUN_001aa8c0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0()" (identifier "FUN_001aa8c0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_000e88d0(local_20,param_2,param_3,param_4);" (call_expression "FUN_000e88d0(local_20,param_2,param_3,param_4)" (identifier "FUN_000e88d0") (argument_list "(local_20,param_2,param_3,param_4)" (( "(") (identifier "local_20") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "local_20[0x3d] = 0;" (assignment_expression "local_20[0x3d] = 0" (subscript_expression "local_20[0x3d]" (identifier "local_20") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(local_20 + 0x3e) = 0;" (assignment_expression "*(undefined1 *)(local_20 + 0x3e) = 0" (pointer_expression "*(undefined1 *)(local_20 + 0x3e)" (* "*") (cast_expression "(undefined1 *)(local_20 + 0x3e)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 0x3e)" (( "(") (binary_expression "local_20 + 0x3e" (identifier "local_20") (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_20 = unaff_EDI + 0x28e307;" (assignment_expression "*local_20 = unaff_EDI + 0x28e307" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (= "=") (binary_expression "unaff_EDI + 0x28e307" (identifier "unaff_EDI") (+ "+") (number_literal "0x28e307"))) (; ";")) (expression_statement "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;" (assignment_expression "*(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" (* "*") (cast_expression "(byte *)(local_20 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 0x24)" (( "(") (binary_expression "local_20 + 0x24" (identifier "local_20") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (binary_expression "*(byte *)(local_20 + 0x24) | 0x30" (pointer_expression "*(byte *)(local_20 + 0x24)" (* "*") (cast_expression "(byte *)(local_20 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 0x24)" (( "(") (binary_expression "local_20 + 0x24" (identifier "local_20") (+ "+") (number_literal "0x24")) () ")")))) (| "|") (number_literal "0x30"))) (; ";")) (expression_statement "local_20[0x3a] = iVar8;" (assignment_expression "local_20[0x3a] = iVar8" (subscript_expression "local_20[0x3a]" (identifier "local_20") ([ "[") (number_literal "0x3a") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "local_20[0x3c] = (int)(local_20 + 0x3e);" (assignment_expression "local_20[0x3c] = (int)(local_20 + 0x3e)" (subscript_expression "local_20[0x3c]" (identifier "local_20") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (cast_expression "(int)(local_20 + 0x3e)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_20 + 0x3e)" (( "(") (binary_expression "local_20 + 0x3e" (identifier "local_20") (+ "+") (number_literal "0x3e")) () ")")))) (; ";")) (} "}")))) (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }\n  else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" (( "(") (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" (* "*") (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" (( "(") (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0xac")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;\n    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;\n    if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;\nLAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;\n  }" ({ "{") (if_statement "if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;" (if "if") (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000adfbd;" (goto "goto") (statement_identifier "LAB_000adfbd") (; ";"))) (if_statement "if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)) goto LAB_000ad7d9;" (if "if") (parenthesized_expression "(((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0))" (( "(") (binary_expression "((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||\n       ((param_4 & 1) == 0)" (parenthesized_expression "((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0)" (( "(") (binary_expression "(uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0" (parenthesized_expression "(uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9))" (( "(") (binary_expression "uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) (& "&") (pointer_expression "*(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" (* "*") (cast_expression "(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 8) + 0x56b9" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x56b9")) () ")"))))) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((param_4 & 1) == 0)" (( "(") (binary_expression "(param_4 & 1) == 0" (parenthesized_expression "(param_4 & 1)" (( "(") (binary_expression "param_4 & 1" (identifier "param_4") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_000ad7d9;" (goto "goto") (statement_identifier "LAB_000ad7d9") (; ";"))) (if_statement "if (param_3 == 1) {\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }\n    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;" (if "if") (parenthesized_expression "(param_3 == 1)" (( "(") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      bVar13 = false;\n      bVar15 = (param_4 & 0x400) == 0;\n      if (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (param_4 & 0x400) == 0;" (assignment_expression "bVar15 = (param_4 & 0x400) == 0" (identifier "bVar15") (= "=") (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 (bVar15) {\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n        iVar8 = 0xd;\n        pbVar11 = param_2;\n        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" (identifier "iVar8") (= "=") (number_literal "0xd")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a4b74)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a4b74)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a4b74)" (( "(") (binary_expression "unaff_EDI + 0x1a4b74" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a4b74")) () ")")))) (; ";")) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" (do "do") (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" (identifier "bVar13") (= "=") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13"))) (; ";")) (if_statement "if (!bVar13) {\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (compound_statement "{\n          iVar8 = 0x13;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar15 = false;\n          bVar13 = (!bVar14 && !bVar13) == bVar14;\n          if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }\n        }" ({ "{") (expression_statement "iVar8 = 0x13;" (assignment_expression "iVar8 = 0x13" (identifier "iVar8") (= "=") (number_literal "0x13")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a7ba1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a7ba1)" (( "(") (binary_expression "unaff_EDI + 0x1a7ba1" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a7ba1")) () ")")))) (; ";")) (do_statement "do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" (do "do") (compound_statement "{\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" (identifier "bVar13") (= "=") (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" (( "(") (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar14"))) (; ";")) (if_statement "if (!bVar13) {\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }" (if "if") (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (compound_statement "{\n            iVar8 = 7;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7af1 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            bVar14 = false;\n            bVar13 = (!bVar15 && !bVar13) == bVar15;\n            if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }\n          }" ({ "{") (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" (identifier "iVar8") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af1 + unaff_EDI" (identifier "pbVar12") (= "=") (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" (& "&") (identifier "DAT_001a7af1")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (do_statement "do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);" (do "do") (compound_statement "{\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar15 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar15 && !bVar13) == bVar15;" (assignment_expression "bVar13 = (!bVar15 && !bVar13) == bVar15" (identifier "bVar13") (= "=") (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" (( "(") (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if (!bVar13) {\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }" (if "if") (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (compound_statement "{\n              iVar8 = 7;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);\n              if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;\n            }" ({ "{") (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" (identifier "iVar8") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a7b10)" (( "(") (binary_expression "unaff_EDI + 0x1a7b10" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a7b10")) () ")")))) (; ";")) (do_statement "do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar13);" (do "do") (compound_statement "{\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar14 = *pbVar11 < *pbVar12;\n                bVar13 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if (((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))\n              goto LAB_000ad7d9;" (if "if") (parenthesized_expression "(((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))" (( "(") (binary_expression "((!bVar14 && !bVar13) != bVar14) &&\n                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0)" (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" (( "(") (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" (( "(") (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (!= "!=") (identifier "bVar14")) () ")")) (&& "&&") (parenthesized_expression "(iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0)" (( "(") (comma_expression "iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0" (assignment_expression "iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI)" (identifier "iVar8") (= "=") (call_expression "strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI)" (identifier "strcmp") (argument_list "((char *)param_2,&DAT_001a7bb4 + unaff_EDI)" (( "(") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")) (, ",") (binary_expression "&DAT_001a7bb4 + unaff_EDI" (pointer_expression "&DAT_001a7bb4" (& "&") (identifier "DAT_001a7bb4")) (+ "+") (identifier "unaff_EDI")) () ")")))) (, ",") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000ad7d9;" (goto "goto") (statement_identifier "LAB_000ad7d9") (; ";"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;" (else "else") (if_statement "if (2 < param_3 - 0xeU) goto LAB_000ad7d9;" (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_000ad7d9;" (goto "goto") (statement_identifier "LAB_000ad7d9") (; ";"))))) (labeled_statement "LAB_000ad7e3:\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;" (statement_identifier "LAB_000ad7e3") (: ":") (expression_statement "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;" (assignment_expression "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20" (pointer_expression "*(byte *)((int)local_20 + 0x91)" (* "*") (cast_expression "(byte *)((int)local_20 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 + 0x91)" (( "(") (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (+ "+") (number_literal "0x91")) () ")")))) (= "=") (binary_expression "*(byte *)((int)local_20 + 0x91) | 0x20" (pointer_expression "*(byte *)((int)local_20 + 0x91)" (* "*") (cast_expression "(byte *)((int)local_20 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 + 0x91)" (( "(") (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (+ "+") (number_literal "0x91")) () ")")))) (| "|") (number_literal "0x20"))) (; ";"))) (} "}")) (else_clause "else {\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }" (else "else") (compound_statement "{\nLAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;\n  }" ({ "{") (labeled_statement "LAB_000ad7d9:\n    if (param_7 != '\0') goto LAB_000ad7e3;" (statement_identifier "LAB_000ad7d9") (: ":") (if_statement "if (param_7 != '\0') goto LAB_000ad7e3;" (if "if") (parenthesized_expression "(param_7 != '\0')" (( "(") (binary_expression "param_7 != '\0'" (identifier "param_7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000ad7e3;" (goto "goto") (statement_identifier "LAB_000ad7e3") (; ";")))) (} "}")))) (if_statement "if ((param_6 == 0) && (uVar10 != 0)) {\n    param_6 = FUN_000a9050();\n  }" (if "if") (parenthesized_expression "((param_6 == 0) && (uVar10 != 0))" (( "(") (binary_expression "(param_6 == 0) && (uVar10 != 0)" (parenthesized_expression "(param_6 == 0)" (( "(") (binary_expression "param_6 == 0" (identifier "param_6") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    param_6 = FUN_000a9050();\n  }" ({ "{") (expression_statement "param_6 = FUN_000a9050();" (assignment_expression "param_6 = FUN_000a9050()" (identifier "param_6") (= "=") (call_expression "FUN_000a9050()" (identifier "FUN_000a9050") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (expression_statement "local_20[0x17] = param_6;" (assignment_expression "local_20[0x17] = param_6" (subscript_expression "local_20[0x17]" (identifier "local_20") ([ "[") (number_literal "0x17") (] "]")) (= "=") (identifier "param_6")) (; ";")) (if_statement "if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;" (if "if") (parenthesized_expression "(*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0)" (( "(") (binary_expression "*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0" (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" (* "*") (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0xc)" (( "(") (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000ae083;" (goto "goto") (statement_identifier "LAB_000ae083") (; ";"))) (expression_statement "pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);" (assignment_expression "pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" (* "*") (cast_expression "(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(*(int *)pbVar1 + 0xc) + 0xc)" (( "(") (binary_expression "**(int **)(*(int *)pbVar1 + 0xc) + 0xc" (pointer_expression "**(int **)(*(int *)pbVar1 + 0xc)" (* "*") (pointer_expression "*(int **)(*(int *)pbVar1 + 0xc)" (* "*") (cast_expression "(int **)(*(int *)pbVar1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0xc)" (( "(") (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {\n    (*pcVar3)();\n  }" (if "if") (parenthesized_expression "(pcVar3 != (code *)(unaff_EDI + -0x58979))" (( "(") (binary_expression "pcVar3 != (code *)(unaff_EDI + -0x58979)" (identifier "pcVar3") (!= "!=") (cast_expression "(code *)(unaff_EDI + -0x58979)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + -0x58979)" (( "(") (binary_expression "unaff_EDI + -0x58979" (identifier "unaff_EDI") (+ "+") (number_literal "-0x58979")) () ")")))) () ")")) (compound_statement "{\n    (*pcVar3)();\n  }" ({ "{") (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar4 = *(undefined4 **)(param_1 + 0x134);" (assignment_expression "puVar4 = *(undefined4 **)(param_1 + 0x134)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 0x134)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x134)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x134)" (( "(") (binary_expression "param_1 + 0x134" (identifier "param_1") (+ "+") (number_literal "0x134")) () ")"))))) (; ";")) (if_statement "if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {\n    FUN_000b7440();\n  }\n  else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }" (if "if") (parenthesized_expression "(puVar4 == *(undefined4 **)(param_1 + 0x138))" (( "(") (binary_expression "puVar4 == *(undefined4 **)(param_1 + 0x138)" (identifier "puVar4") (== "==") (pointer_expression "*(undefined4 **)(param_1 + 0x138)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x138)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x138)" (( "(") (binary_expression "param_1 + 0x138" (identifier "param_1") (+ "+") (number_literal "0x138")) () ")"))))) () ")")) (compound_statement "{\n    FUN_000b7440();\n  }" ({ "{") (expression_statement "FUN_000b7440();" (call_expression "FUN_000b7440()" (identifier "FUN_000b7440") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }" (else "else") (compound_statement "{\n    *puVar4 = local_20;\n    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;\n  }" ({ "{") (expression_statement "*puVar4 = local_20;" (assignment_expression "*puVar4 = local_20" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "local_20")) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 0x134) = puVar4 + 1;" (assignment_expression "*(undefined4 **)(param_1 + 0x134) = puVar4 + 1" (pointer_expression "*(undefined4 **)(param_1 + 0x134)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x134)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x134)" (( "(") (binary_expression "param_1 + 0x134" (identifier "param_1") (+ "+") (number_literal "0x134")) () ")")))) (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "iVar8 = *(int *)(param_1 + 4);" (assignment_expression "iVar8 = *(int *)(param_1 + 4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar7 = *(int *)(*(int *)pbVar1 + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (*(char *)(iVar8 + 0xac) == '\0') {\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0xac) == '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar8 + 0xac)" (* "*") (cast_expression "(char *)(iVar8 + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xac)" (( "(") (binary_expression "iVar8 + 0xac" (identifier "iVar8") (+ "+") (number_literal "0xac")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (iVar7 == 0) {\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }\n    bVar13 = false;\n    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';\n    if (!bVar15) goto LAB_000ad8b2;\n    iVar9 = 0xc;\n    pbVar11 = param_2;\n    pbVar12 = &DAT_001a7af8 + unaff_EDI;\n    do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);\n    bVar14 = false;\n    bVar13 = (!bVar13 && !bVar15) == bVar13;\n    if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }\nLAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';\n    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if (iVar7 == 0) {\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000adfbd:\n                    \n      FUN_0008b620();\n    }" ({ "{") (labeled_statement "LAB_000adfbd:\n                    \n      FUN_0008b620();" (statement_identifier "LAB_000adfbd") (: ":") (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" (identifier "FUN_0008b620") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = *(char *)(iVar7 + 0x318d) == '\0';" (assignment_expression "bVar15 = *(char *)(iVar7 + 0x318d) == '\0'" (identifier "bVar15") (= "=") (binary_expression "*(char *)(iVar7 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x318d)" (* "*") (cast_expression "(char *)(iVar7 + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x318d)" (( "(") (binary_expression "iVar7 + 0x318d" (identifier "iVar7") (+ "+") (number_literal "0x318d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (!bVar15) goto LAB_000ad8b2;" (if "if") (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (goto_statement "goto LAB_000ad8b2;" (goto "goto") (statement_identifier "LAB_000ad8b2") (; ";"))) (expression_statement "iVar9 = 0xc;" (assignment_expression "iVar9 = 0xc" (identifier "iVar9") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = &DAT_001a7af8 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af8 + unaff_EDI" (identifier "pbVar12") (= "=") (binary_expression "&DAT_001a7af8 + unaff_EDI" (pointer_expression "&DAT_001a7af8" (& "&") (identifier "DAT_001a7af8")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (do_statement "do {\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    } while (bVar15);" (do "do") (compound_statement "{\n      if (iVar9 == 0) break;\n      iVar9 = iVar9 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar15 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar9 == 0) break;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" (identifier "bVar13") (= "=") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13"))) (; ";")) (if_statement "if (bVar13) {\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }\n    else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\nLAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;\n    }" ({ "{") (labeled_statement "LAB_000ad8a8:\n      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;" (statement_identifier "LAB_000ad8a8") (: ":") (expression_statement "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;" (assignment_expression "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4" (pointer_expression "*(byte *)((int)local_20 + 0x91)" (* "*") (cast_expression "(byte *)((int)local_20 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 + 0x91)" (( "(") (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (+ "+") (number_literal "0x91")) () ")")))) (= "=") (binary_expression "*(byte *)((int)local_20 + 0x91) | 4" (pointer_expression "*(byte *)((int)local_20 + 0x91)" (* "*") (cast_expression "(byte *)((int)local_20 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 + 0x91)" (( "(") (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (+ "+") (number_literal "0x91")) () ")")))) (| "|") (number_literal "4"))) (; ";"))) (} "}")) (else_clause "else {\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" (else "else") (compound_statement "{\n      iVar9 = 0xc;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;\n      bVar13 = false;\n      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }\n    }" ({ "{") (expression_statement "iVar9 = 0xc;" (assignment_expression "iVar9 = 0xc" (identifier "iVar9") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b04)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a7b04)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a7b04)" (( "(") (binary_expression "unaff_EDI + 0x1a7b04" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a7b04")) () ")")))) (; ";")) (do_statement "do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar13);" (do "do") (compound_statement "{\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar14 = *pbVar11 < *pbVar12;\n        bVar13 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar9 == 0) break;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;" (if "if") (parenthesized_expression "((!bVar14 && !bVar13) == bVar14)" (( "(") (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" (( "(") (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar14")) () ")")) (goto_statement "goto LAB_000ad8a8;" (goto "goto") (statement_identifier "LAB_000ad8a8") (; ";"))) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = *(char *)(iVar7 + 0xad5) == '\0';" (assignment_expression "bVar15 = *(char *)(iVar7 + 0xad5) == '\0'" (identifier "bVar15") (= "=") (binary_expression "*(char *)(iVar7 + 0xad5) == '\0'" (pointer_expression "*(char *)(iVar7 + 0xad5)" (* "*") (cast_expression "(char *)(iVar7 + 0xad5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0xad5)" (( "(") (binary_expression "iVar7 + 0xad5" (identifier "iVar7") (+ "+") (number_literal "0xad5")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (bVar15) {\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n        iVar9 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        bVar14 = false;\n        bVar13 = (!bVar13 && !bVar15) == bVar13;\n        if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }\n        goto LAB_000ad8a8;\n      }" ({ "{") (expression_statement "iVar9 = 7;" (assignment_expression "iVar9 = 7" (identifier "iVar9") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af1 + unaff_EDI" (identifier "pbVar12") (= "=") (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" (& "&") (identifier "DAT_001a7af1")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (do_statement "do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" (do "do") (compound_statement "{\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar9 == 0) break;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" (identifier "bVar13") (= "=") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13"))) (; ";")) (if_statement "if (!bVar13) {\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }" (if "if") (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (compound_statement "{\n          iVar9 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;\n        }" ({ "{") (expression_statement "iVar9 = 7;" (assignment_expression "iVar9 = 7" (identifier "iVar9") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a7b10)" (( "(") (binary_expression "unaff_EDI + 0x1a7b10" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a7b10")) () ")")))) (; ";")) (do_statement "do {\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" (do "do") (compound_statement "{\n            if (iVar9 == 0) break;\n            iVar9 = iVar9 + -1;\n            bVar14 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" ({ "{") (if_statement "if (iVar9 == 0) break;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;" (if "if") (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" (( "(") (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" (( "(") (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (!= "!=") (identifier "bVar14")) () ")")) (goto_statement "goto LAB_000ad8b2;" (goto "goto") (statement_identifier "LAB_000ad8b2") (; ";"))) (} "}"))) (goto_statement "goto LAB_000ad8a8;" (goto "goto") (statement_identifier "LAB_000ad8a8") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_000ad8b2:\n    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';" (statement_identifier "LAB_000ad8b2") (: ":") (expression_statement "bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';" (assignment_expression "bVar13 = *(char *)(iVar7 + 0x3ced) == '\0'" (identifier "bVar13") (= "=") (binary_expression "*(char *)(iVar7 + 0x3ced) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x3ced)" (* "*") (cast_expression "(char *)(iVar7 + 0x3ced)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x3ced)" (( "(") (binary_expression "iVar7 + 0x3ced" (identifier "iVar7") (+ "+") (number_literal "0x3ced")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";"))) (if_statement "if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13))" (( "(") (binary_expression "((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&\n       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)" (parenthesized_expression "((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13))" (( "(") (binary_expression "(!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)" (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (&& "&&") (parenthesized_expression "(bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)" (( "(") (comma_expression "bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13" (assignment_expression "bVar13 = *(char *)(iVar8 + 0xac) == '\0'" (identifier "bVar13") (= "=") (binary_expression "*(char *)(iVar8 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar8 + 0xac)" (* "*") (cast_expression "(char *)(iVar8 + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xac)" (( "(") (binary_expression "iVar8 + 0xac" (identifier "iVar8") (+ "+") (number_literal "0xac")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (, ",") (identifier "bVar13")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)" (( "(") (comma_expression "bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13" (assignment_expression "bVar13 = *(char *)(param_1 + 0x1cd) == '\0'" (identifier "bVar13") (= "=") (binary_expression "*(char *)(param_1 + 0x1cd) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1cd)" (* "*") (cast_expression "(char *)(param_1 + 0x1cd)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1cd)" (( "(") (binary_expression "param_1 + 0x1cd" (identifier "param_1") (+ "+") (number_literal "0x1cd")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (, ",") (identifier "bVar13")) () ")"))) () ")")) (compound_statement "{\n      bVar15 = false;\n      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';\n      if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }\n    }" ({ "{") (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = *(char *)(iVar7 + 0x318d) == '\0';" (assignment_expression "bVar13 = *(char *)(iVar7 + 0x318d) == '\0'" (identifier "bVar13") (= "=") (binary_expression "*(char *)(iVar7 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x318d)" (* "*") (cast_expression "(char *)(iVar7 + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x318d)" (( "(") (binary_expression "iVar7 + 0x318d" (identifier "iVar7") (+ "+") (number_literal "0x318d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (bVar13) {\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n        iVar8 = 6;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_0019defb + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar13 = (!bVar15 && !bVar13) == bVar15;\n        if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }\n      }" ({ "{") (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" (identifier "iVar8") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = &DAT_0019defb + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_0019defb + unaff_EDI" (identifier "pbVar12") (= "=") (binary_expression "&DAT_0019defb + unaff_EDI" (pointer_expression "&DAT_0019defb" (& "&") (identifier "DAT_0019defb")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);" (do "do") (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (expression_statement "bVar13 = (!bVar15 && !bVar13) == bVar15;" (assignment_expression "bVar13 = (!bVar15 && !bVar13) == bVar15" (identifier "bVar13") (= "=") (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" (( "(") (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if (bVar13) {\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n          pbVar11 = (byte *)((int)local_20 + 0x91);\n          *pbVar11 = *pbVar11 | 4;\n          bVar13 = *pbVar11 == 0;\n        }" ({ "{") (expression_statement "pbVar11 = (byte *)((int)local_20 + 0x91);" (assignment_expression "pbVar11 = (byte *)((int)local_20 + 0x91)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)local_20 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 + 0x91)" (( "(") (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (+ "+") (number_literal "0x91")) () ")")))) (; ";")) (expression_statement "*pbVar11 = *pbVar11 | 4;" (assignment_expression "*pbVar11 = *pbVar11 | 4" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (binary_expression "*pbVar11 | 4" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (| "|") (number_literal "4"))) (; ";")) (expression_statement "bVar13 = *pbVar11 == 0;" (assignment_expression "bVar13 = *pbVar11 == 0" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == 0" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (number_literal "0"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }" (else "else") (compound_statement "{\n    bVar13 = iVar7 == 0;\n    if (bVar13) goto LAB_000adfbd;\n  }" ({ "{") (expression_statement "bVar13 = iVar7 == 0;" (assignment_expression "bVar13 = iVar7 == 0" (identifier "bVar13") (= "=") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar13) goto LAB_000adfbd;" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (goto_statement "goto LAB_000adfbd;" (goto "goto") (statement_identifier "LAB_000adfbd") (; ";"))) (} "}")))) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "iVar8 = 5;" (assignment_expression "iVar8 = 5" (identifier "iVar8") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar11 = *(byte **)(iVar7 + 0x3820);" (assignment_expression "pbVar11 = *(byte **)(iVar7 + 0x3820)" (identifier "pbVar11") (= "=") (pointer_expression "*(byte **)(iVar7 + 0x3820)" (* "*") (cast_expression "(byte **)(iVar7 + 0x3820)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0x3820)" (( "(") (binary_expression "iVar7 + 0x3820" (identifier "iVar7") (+ "+") (number_literal "0x3820")) () ")"))))) (; ";")) (expression_statement "pbVar12 = &DAT_001ab0cb + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001ab0cb + unaff_EDI" (identifier "pbVar12") (= "=") (binary_expression "&DAT_001ab0cb + unaff_EDI" (pointer_expression "&DAT_001ab0cb" (& "&") (identifier "DAT_001ab0cb")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (do_statement "do {\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  } while (bVar13);" (do "do") (compound_statement "{\n    if (iVar8 == 0) break;\n    iVar8 = iVar8 + -1;\n    bVar15 = *pbVar11 < *pbVar12;\n    bVar13 = *pbVar11 == *pbVar12;\n    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n  }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if ((!bVar15 && !bVar13) == bVar15) {\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }" (if "if") (parenthesized_expression "((!bVar15 && !bVar13) == bVar15)" (( "(") (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" (( "(") (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar15")) () ")")) (compound_statement "{\n    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;\n  }" ({ "{") (expression_statement "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;" (assignment_expression "*(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8" (pointer_expression "*(byte *)((int)local_20 + 0x91)" (* "*") (cast_expression "(byte *)((int)local_20 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 + 0x91)" (( "(") (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (+ "+") (number_literal "0x91")) () ")")))) (= "=") (binary_expression "*(byte *)((int)local_20 + 0x91) | 8" (pointer_expression "*(byte *)((int)local_20 + 0x91)" (* "*") (cast_expression "(byte *)((int)local_20 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 + 0x91)" (( "(") (binary_expression "(int)local_20 + 0x91" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (+ "+") (number_literal "0x91")) () ")")))) (| "|") (number_literal "8"))) (; ";")) (} "}"))) (if_statement "if (param_3 == 3) {\n    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 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    bVar13 = false;\n    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';\n    if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = *(char *)(param_1 + 0x1cc) == '\0';" (assignment_expression "bVar15 = *(char *)(param_1 + 0x1cc) == '\0'" (identifier "bVar15") (= "=") (binary_expression "*(char *)(param_1 + 0x1cc) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1cc)" (* "*") (cast_expression "(char *)(param_1 + 0x1cc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1cc)" (( "(") (binary_expression "param_1 + 0x1cc" (identifier "param_1") (+ "+") (number_literal "0x1cc")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (bVar15) {\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n      iVar8 = 5;\n      pbVar11 = param_2;\n      pbVar12 = &DAT_0019deab + unaff_EDI;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }\n    }" ({ "{") (expression_statement "iVar8 = 5;" (assignment_expression "iVar8 = 5" (identifier "iVar8") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = &DAT_0019deab + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_0019deab + unaff_EDI" (identifier "pbVar12") (= "=") (binary_expression "&DAT_0019deab + unaff_EDI" (pointer_expression "&DAT_0019deab" (& "&") (identifier "DAT_0019deab")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" (do "do") (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if ((!bVar13 && !bVar15) == bVar13) {\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }" (if "if") (parenthesized_expression "((!bVar13 && !bVar15) == bVar13)" (( "(") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13")) () ")")) (compound_statement "{\n        sVar6 = strlen((char *)param_2);\n        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;\n        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;\n        iVar8 = 4;\n        pbVar11 = param_2 + (sVar6 - 3);\n        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }\n      }" ({ "{") (expression_statement "sVar6 = strlen((char *)param_2);" (assignment_expression "sVar6 = strlen((char *)param_2)" (identifier "sVar6") (= "=") (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 "bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;" (assignment_expression "bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4" (identifier "bVar13") (= "=") (binary_expression "(undefined1 *)0xffffffef < &stack0xffffffa4" (cast_expression "(undefined1 *)0xffffffef" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffef")) (< "<") (pointer_expression "&stack0xffffffa4" (& "&") (identifier "stack0xffffffa4")))) (; ";")) (expression_statement "bVar15 = &stack0x00000000 == (undefined1 *)0x4c;" (assignment_expression "bVar15 = &stack0x00000000 == (undefined1 *)0x4c" (identifier "bVar15") (= "=") (binary_expression "&stack0x00000000 == (undefined1 *)0x4c" (pointer_expression "&stack0x00000000" (& "&") (identifier "stack0x00000000")) (== "==") (cast_expression "(undefined1 *)0x4c" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x4c")))) (; ";")) (expression_statement "iVar8 = 4;" (assignment_expression "iVar8 = 4" (identifier "iVar8") (= "=") (number_literal "4")) (; ";")) (expression_statement "pbVar11 = param_2 + (sVar6 - 3);" (assignment_expression "pbVar11 = param_2 + (sVar6 - 3)" (identifier "pbVar11") (= "=") (binary_expression "param_2 + (sVar6 - 3)" (identifier "param_2") (+ "+") (parenthesized_expression "(sVar6 - 3)" (( "(") (binary_expression "sVar6 - 3" (identifier "sVar6") (- "-") (number_literal "3")) () ")")))) (; ";")) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1af75d);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1af75d)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1af75d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1af75d)" (( "(") (binary_expression "unaff_EDI + 0x1af75d" (identifier "unaff_EDI") (+ "+") (number_literal "0x1af75d")) () ")")))) (; ";")) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" (do "do") (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar15 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if ((!bVar13 && !bVar15) == bVar13) {\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }" (if "if") (parenthesized_expression "((!bVar13 && !bVar15) == bVar13)" (( "(") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13")) () ")")) (compound_statement "{\n          *(undefined1 *)(param_1 + 0x1cc) = 1;\n        }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0x1cc) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x1cc) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x1cc)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x1cc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1cc)" (( "(") (binary_expression "param_1 + 0x1cc" (identifier "param_1") (+ "+") (number_literal "0x1cc")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }" (else "else") (if_statement "if ((param_3 == 1) || (param_3 == 8)) {\n    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 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    bVar13 = param_6 < 0x15;\n    bVar15 = param_6 == 0x15;\n    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "bVar13 = param_6 < 0x15;" (assignment_expression "bVar13 = param_6 < 0x15" (identifier "bVar13") (= "=") (binary_expression "param_6 < 0x15" (identifier "param_6") (< "<") (number_literal "0x15"))) (; ";")) (expression_statement "bVar15 = param_6 == 0x15;" (assignment_expression "bVar15 = param_6 == 0x15" (identifier "bVar15") (= "=") (binary_expression "param_6 == 0x15" (identifier "param_6") (== "==") (number_literal "0x15"))) (; ";")) (if_statement "if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13))" (( "(") (binary_expression "(0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)" (parenthesized_expression "(0x15 < param_6)" (( "(") (binary_expression "0x15 < param_6" (number_literal "0x15") (< "<") (identifier "param_6")) () ")")) (|| "||") (parenthesized_expression "(bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)" (( "(") (comma_expression "bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13" (assignment_expression "bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0" (identifier "bVar13") (= "=") (binary_expression "(0x3020c2U >> (param_6 & 0x1f) & 1) != 0" (parenthesized_expression "(0x3020c2U >> (param_6 & 0x1f) & 1)" (( "(") (binary_expression "0x3020c2U >> (param_6 & 0x1f) & 1" (binary_expression "0x3020c2U >> (param_6 & 0x1f)" (number_literal "0x3020c2U") (>> ">>") (parenthesized_expression "(param_6 & 0x1f)" (( "(") (binary_expression "param_6 & 0x1f" (identifier "param_6") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) (, ",") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")"))) () ")")) (compound_statement "{\n      iVar8 = 10;\n      pbVar11 = param_2;\n      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      bVar14 = false;\n      bVar13 = (!bVar13 && !bVar15) == bVar13;\n      if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "iVar8 = 10;" (assignment_expression "iVar8 = 10" (identifier "iVar8") (= "=") (number_literal "10")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a0735);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a0735)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a0735)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a0735)" (( "(") (binary_expression "unaff_EDI + 0x1a0735" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a0735")) () ")")))) (; ";")) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" (do "do") (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar11 < *pbVar12;\n        bVar15 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" (identifier "bVar13") (= "=") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13"))) (; ";")) (if_statement "if (!bVar13) {\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (compound_statement "{\n        iVar8 = 7;\n        pbVar11 = param_2;\n        pbVar12 = &DAT_001a7af1 + unaff_EDI;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);\n        bVar15 = false;\n        bVar13 = (!bVar14 && !bVar13) == bVar14;\n        if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" (identifier "iVar8") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = &DAT_001a7af1 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7af1 + unaff_EDI" (identifier "pbVar12") (= "=") (binary_expression "&DAT_001a7af1 + unaff_EDI" (pointer_expression "&DAT_001a7af1" (& "&") (identifier "DAT_001a7af1")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        } while (bVar13);" (do "do") (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar11 < *pbVar12;\n          bVar13 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" (identifier "bVar13") (= "=") (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" (( "(") (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar14"))) (; ";")) (if_statement "if (!bVar13) {\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (compound_statement "{\n          iVar8 = 7;\n          pbVar11 = param_2;\n          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);\n          do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);\n          bVar14 = false;\n          bVar13 = (!bVar15 && !bVar13) == bVar15;\n          if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }\n        }" ({ "{") (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" (identifier "iVar8") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a7b10)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a7b10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a7b10)" (( "(") (binary_expression "unaff_EDI + 0x1a7b10" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a7b10")) () ")")))) (; ";")) (do_statement "do {\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          } while (bVar13);" (do "do") (compound_statement "{\n            if (iVar8 == 0) break;\n            iVar8 = iVar8 + -1;\n            bVar15 = *pbVar11 < *pbVar12;\n            bVar13 = *pbVar11 == *pbVar12;\n            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar11 < *pbVar12;" (assignment_expression "bVar15 = *pbVar11 < *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar15 && !bVar13) == bVar15;" (assignment_expression "bVar13 = (!bVar15 && !bVar13) == bVar15" (identifier "bVar13") (= "=") (binary_expression "(!bVar15 && !bVar13) == bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" (( "(") (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if (!bVar13) {\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }" (if "if") (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (compound_statement "{\n            iVar8 = 5;\n            pbVar11 = param_2;\n            pbVar12 = &DAT_001a7bb4 + unaff_EDI;\n            do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);\n            if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }\n          }" ({ "{") (expression_statement "iVar8 = 5;" (assignment_expression "iVar8 = 5" (identifier "iVar8") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = &DAT_001a7bb4 + unaff_EDI;" (assignment_expression "pbVar12 = &DAT_001a7bb4 + unaff_EDI" (identifier "pbVar12") (= "=") (binary_expression "&DAT_001a7bb4 + unaff_EDI" (pointer_expression "&DAT_001a7bb4" (& "&") (identifier "DAT_001a7bb4")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (do_statement "do {\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            } while (bVar13);" (do "do") (compound_statement "{\n              if (iVar8 == 0) break;\n              iVar8 = iVar8 + -1;\n              bVar14 = *pbVar11 < *pbVar12;\n              bVar13 = *pbVar11 == *pbVar12;\n              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n            }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if ((!bVar14 && !bVar13) != bVar14) {\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }" (if "if") (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" (( "(") (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" (( "(") (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (!= "!=") (identifier "bVar14")) () ")")) (compound_statement "{\n              iVar8 = 0xc;\n              pbVar11 = (byte *)((int)local_20 + 0x92);\n              bVar13 = false;\n              *pbVar11 = *pbVar11 | 0x40;\n              bVar15 = *pbVar11 == 0;\n              pbVar11 = param_2;\n              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);\n              do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);\n              bVar14 = false;\n              bVar13 = (!bVar13 && !bVar15) == bVar13;\n              if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }\n              local_20[0x34] = iVar8;\n              local_20[0x35] = 0;\n            }" ({ "{") (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" (identifier "iVar8") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar11 = (byte *)((int)local_20 + 0x92);" (assignment_expression "pbVar11 = (byte *)((int)local_20 + 0x92)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)local_20 + 0x92)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 + 0x92)" (( "(") (binary_expression "(int)local_20 + 0x92" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (+ "+") (number_literal "0x92")) () ")")))) (; ";")) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "*pbVar11 = *pbVar11 | 0x40;" (assignment_expression "*pbVar11 = *pbVar11 | 0x40" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (binary_expression "*pbVar11 | 0x40" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (| "|") (number_literal "0x40"))) (; ";")) (expression_statement "bVar15 = *pbVar11 == 0;" (assignment_expression "bVar15 = *pbVar11 == 0" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == 0" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (number_literal "0"))) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a6604);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a6604)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a6604)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a6604)" (( "(") (binary_expression "unaff_EDI + 0x1a6604" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a6604")) () ")")))) (; ";")) (do_statement "do {\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              } while (bVar15);" (do "do") (compound_statement "{\n                if (iVar8 == 0) break;\n                iVar8 = iVar8 + -1;\n                bVar13 = *pbVar11 < *pbVar12;\n                bVar15 = *pbVar11 == *pbVar12;\n                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n              }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar15 = *pbVar11 == *pbVar12;" (assignment_expression "bVar15 = *pbVar11 == *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" (identifier "bVar13") (= "=") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13"))) (; ";")) (if_statement "if (bVar13) {\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }\n              else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *(undefined1 *)((int)piVar5 + 5) = 0;\n                *(undefined1 *)(piVar5 + 1) = uVar2;\n                *piVar5 = unaff_EDI + 0x286dc7;\nLAB_000ae026:\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6d80();\n              }" ({ "{") (expression_statement "piVar5 = (int *)FUN_001aa8c0();" (assignment_expression "piVar5 = (int *)FUN_001aa8c0()" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_001aa8c0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0()" (identifier "FUN_001aa8c0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*piVar5 = unaff_EDI + 0x28d063;" (assignment_expression "*piVar5 = unaff_EDI + 0x28d063" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (binary_expression "unaff_EDI + 0x28d063" (identifier "unaff_EDI") (+ "+") (number_literal "0x28d063"))) (; ";")) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }" (if "if") (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0xc)" (( "(") (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                    \n                  FUN_0008b620();\n                }" ({ "{") (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" (identifier "FUN_0008b620") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);" (assignment_expression "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (* "*") (cast_expression "(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (( "(") (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" (* "*") (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0xc)" (( "(") (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)piVar5 + 5) = 0;" (assignment_expression "*(undefined1 *)((int)piVar5 + 5) = 0" (pointer_expression "*(undefined1 *)((int)piVar5 + 5)" (* "*") (cast_expression "(undefined1 *)((int)piVar5 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar5 + 5)" (( "(") (binary_expression "(int)piVar5 + 5" (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5")) (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(piVar5 + 1) = uVar2;" (assignment_expression "*(undefined1 *)(piVar5 + 1) = uVar2" (pointer_expression "*(undefined1 *)(piVar5 + 1)" (* "*") (cast_expression "(undefined1 *)(piVar5 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 1)" (( "(") (binary_expression "piVar5 + 1" (identifier "piVar5") (+ "+") (number_literal "1")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*piVar5 = unaff_EDI + 0x286dc7;" (assignment_expression "*piVar5 = unaff_EDI + 0x286dc7" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (binary_expression "unaff_EDI + 0x286dc7" (identifier "unaff_EDI") (+ "+") (number_literal "0x286dc7"))) (; ";")) (labeled_statement "LAB_000ae026:\n                local_20[0x36] = (int)piVar5;" (statement_identifier "LAB_000ae026") (: ":") (expression_statement "local_20[0x36] = (int)piVar5;" (assignment_expression "local_20[0x36] = (int)piVar5" (subscript_expression "local_20[0x36]" (identifier "local_20") ([ "[") (number_literal "0x36") (] "]")) (= "=") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) (; ";"))) (expression_statement "iVar8 = FUN_000e6d80();" (assignment_expression "iVar8 = FUN_000e6d80()" (identifier "iVar8") (= "=") (call_expression "FUN_000e6d80()" (identifier "FUN_000e6d80") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }" (else "else") (compound_statement "{\n                iVar8 = 0xd;\n                pbVar11 = param_2;\n                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                bVar15 = false;\n                bVar13 = (!bVar14 && !bVar13) == bVar14;\n                if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }\n                iVar8 = 0xc;\n                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);\n                do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);\n                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;\n                piVar5 = (int *)FUN_001aa8c0();\n                *piVar5 = unaff_EDI + 0x28d063;\n                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }\n                *(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                *piVar5 = unaff_EDI + 0x286ddf;\n                local_20[0x36] = (int)piVar5;\n                iVar8 = FUN_000e6da0();\n              }" ({ "{") (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" (identifier "iVar8") (= "=") (number_literal "0xd")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar12 = (byte *)(unaff_EDI + 0x1a6610);" (assignment_expression "pbVar12 = (byte *)(unaff_EDI + 0x1a6610)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a6610)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a6610)" (( "(") (binary_expression "unaff_EDI + 0x1a6610" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a6610")) () ")")))) (; ";")) (do_statement "do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);" (do "do") (compound_statement "{\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar14 = *pbVar11 < *pbVar12;\n                  bVar13 = *pbVar11 == *pbVar12;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n                }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar11 < *pbVar12;" (assignment_expression "bVar14 = *pbVar11 < *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar13 = *pbVar11 == *pbVar12;" (assignment_expression "bVar13 = *pbVar11 == *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar14 && !bVar13) == bVar14;" (assignment_expression "bVar13 = (!bVar14 && !bVar13) == bVar14" (identifier "bVar13") (= "=") (binary_expression "(!bVar14 && !bVar13) == bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" (( "(") (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar14"))) (; ";")) (if_statement "if (bVar13) {\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n                  piVar5 = (int *)FUN_001aa8c0();\n                  *piVar5 = unaff_EDI + 0x28d063;\n                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }\n                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);\n                  *(undefined1 *)((int)piVar5 + 5) = 1;\n                  *(undefined1 *)(piVar5 + 1) = uVar2;\n                  *piVar5 = unaff_EDI + 0x286dc7;\n                  goto LAB_000ae026;\n                }" ({ "{") (expression_statement "piVar5 = (int *)FUN_001aa8c0();" (assignment_expression "piVar5 = (int *)FUN_001aa8c0()" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_001aa8c0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0()" (identifier "FUN_001aa8c0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*piVar5 = unaff_EDI + 0x28d063;" (assignment_expression "*piVar5 = unaff_EDI + 0x28d063" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (binary_expression "unaff_EDI + 0x28d063" (identifier "unaff_EDI") (+ "+") (number_literal "0x28d063"))) (; ";")) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                    FUN_0008b620();\n                  }" (if "if") (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0xc)" (( "(") (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                    \n                    FUN_0008b620();\n                  }" ({ "{") (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" (identifier "FUN_0008b620") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);" (assignment_expression "uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (* "*") (cast_expression "(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (( "(") (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" (* "*") (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0xc)" (( "(") (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)piVar5 + 5) = 1;" (assignment_expression "*(undefined1 *)((int)piVar5 + 5) = 1" (pointer_expression "*(undefined1 *)((int)piVar5 + 5)" (* "*") (cast_expression "(undefined1 *)((int)piVar5 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar5 + 5)" (( "(") (binary_expression "(int)piVar5 + 5" (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5")) (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined1 *)(piVar5 + 1) = uVar2;" (assignment_expression "*(undefined1 *)(piVar5 + 1) = uVar2" (pointer_expression "*(undefined1 *)(piVar5 + 1)" (* "*") (cast_expression "(undefined1 *)(piVar5 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 1)" (( "(") (binary_expression "piVar5 + 1" (identifier "piVar5") (+ "+") (number_literal "1")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*piVar5 = unaff_EDI + 0x286dc7;" (assignment_expression "*piVar5 = unaff_EDI + 0x286dc7" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (binary_expression "unaff_EDI + 0x286dc7" (identifier "unaff_EDI") (+ "+") (number_literal "0x286dc7"))) (; ";")) (goto_statement "goto LAB_000ae026;" (goto "goto") (statement_identifier "LAB_000ae026") (; ";")) (} "}"))) (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" (identifier "iVar8") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x1a7bb9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a7bb9)" (( "(") (binary_expression "unaff_EDI + 0x1a7bb9" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a7bb9")) () ")")))) (; ";")) (do_statement "do {\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                } while (bVar13);" (do "do") (compound_statement "{\n                  if (iVar8 == 0) break;\n                  iVar8 = iVar8 + -1;\n                  bVar15 = *param_2 < *pbVar11;\n                  bVar13 = *param_2 == *pbVar11;\n                  param_2 = param_2 + (uint)bVar16 * -2 + 1;\n                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;\n                }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *param_2 < *pbVar11;" (assignment_expression "bVar15 = *param_2 < *pbVar11" (identifier "bVar15") (= "=") (binary_expression "*param_2 < *pbVar11" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "bVar13 = *param_2 == *pbVar11;" (assignment_expression "bVar13 = *param_2 == *pbVar11" (identifier "bVar13") (= "=") (binary_expression "*param_2 == *pbVar11" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "param_2 = param_2 + (uint)bVar16 * -2 + 1;" (assignment_expression "param_2 = param_2 + (uint)bVar16 * -2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + (uint)bVar16 * -2 + 1" (binary_expression "param_2 + (uint)bVar16 * -2" (identifier "param_2") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar16 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;" (if "if") (parenthesized_expression "((!bVar15 && !bVar13) != bVar15)" (( "(") (binary_expression "(!bVar15 && !bVar13) != bVar15" (parenthesized_expression "(!bVar15 && !bVar13)" (( "(") (binary_expression "!bVar15 && !bVar13" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (!= "!=") (identifier "bVar15")) () ")")) (goto_statement "goto LAB_000ad932;" (goto "goto") (statement_identifier "LAB_000ad932") (; ";"))) (expression_statement "piVar5 = (int *)FUN_001aa8c0();" (assignment_expression "piVar5 = (int *)FUN_001aa8c0()" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_001aa8c0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0()" (identifier "FUN_001aa8c0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*piVar5 = unaff_EDI + 0x28d063;" (assignment_expression "*piVar5 = unaff_EDI + 0x28d063" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (binary_expression "unaff_EDI + 0x28d063" (identifier "unaff_EDI") (+ "+") (number_literal "0x28d063"))) (; ";")) (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\n                    \n                    \n                  FUN_0008b620();\n                }" (if "if") (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0xc)" (( "(") (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                    \n                  FUN_0008b620();\n                }" ({ "{") (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" (identifier "FUN_0008b620") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);" (assignment_expression "*(undefined1 *)(piVar5 + 1) =\n                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (pointer_expression "*(undefined1 *)(piVar5 + 1)" (* "*") (cast_expression "(undefined1 *)(piVar5 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 1)" (( "(") (binary_expression "piVar5 + 1" (identifier "piVar5") (+ "+") (number_literal "1")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (* "*") (cast_expression "(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)" (( "(") (binary_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" (* "*") (cast_expression "(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) + 4" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0xc)" (( "(") (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*piVar5 = unaff_EDI + 0x286ddf;" (assignment_expression "*piVar5 = unaff_EDI + 0x286ddf" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (binary_expression "unaff_EDI + 0x286ddf" (identifier "unaff_EDI") (+ "+") (number_literal "0x286ddf"))) (; ";")) (expression_statement "local_20[0x36] = (int)piVar5;" (assignment_expression "local_20[0x36] = (int)piVar5" (subscript_expression "local_20[0x36]" (identifier "local_20") ([ "[") (number_literal "0x36") (] "]")) (= "=") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) (; ";")) (expression_statement "iVar8 = FUN_000e6da0();" (assignment_expression "iVar8 = FUN_000e6da0()" (identifier "iVar8") (= "=") (call_expression "FUN_000e6da0()" (identifier "FUN_000e6da0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "local_20[0x34] = iVar8;" (assignment_expression "local_20[0x34] = iVar8" (subscript_expression "local_20[0x34]" (identifier "local_20") ([ "[") (number_literal "0x34") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "local_20[0x35] = 0;" (assignment_expression "local_20[0x35] = 0" (subscript_expression "local_20[0x35]" (identifier "local_20") ([ "[") (number_literal "0x35") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))))) (labeled_statement "LAB_000ad932:\n  if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }" (statement_identifier "LAB_000ad932") (: ":") (if_statement "if (*(char *)(param_1 + 0x1c5) != '\0') {\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x1c5) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x1c5) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1c5)" (* "*") (cast_expression "(char *)(param_1 + 0x1c5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c5)" (( "(") (binary_expression "param_1 + 0x1c5" (identifier "param_1") (+ "+") (number_literal "0x1c5")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }\n    FUN_000ad5f0();\n  }" ({ "{") (if_statement "if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }" (if "if") (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 0xc) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 0xc)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0xc)" (( "(") (binary_expression "*(int *)pbVar1 + 0xc" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000ae083:\n                    \n      FUN_0008b620();\n    }" ({ "{") (labeled_statement "LAB_000ae083:\n                    \n      FUN_0008b620();" (statement_identifier "LAB_000ae083") (: ":") (expression_statement "FUN_0008b620();" (call_expression "FUN_0008b620()" (identifier "FUN_0008b620") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (expression_statement "FUN_000ad5f0();" (call_expression "FUN_000ad5f0()" (identifier "FUN_000ad5f0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return local_20;" (return "return") (identifier "local_20") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* 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_27::Layout::make_output_section
          (Layout *this,char *var_33,type_8 var_10,Elf_Xword var_4,Output_section_order var_23,
          bool is_relro)

{
  type_1 *pbVar1;
  type_2 *puVar2;
  type_3 *p_Var3;
  type_4 **var_5;
  int *var_14;
  type_5 *var_26;
  type_6 __position;
  type_7 *pSVar7;
  type_8 EVar8;
  type_9 *pOVar9;
  size_t sVar10;
  size_t var_34;
  type_10 *pOVar12;
  type_11 *var_20;
  type_12 *var_19;
  int var_6;
  int var_31;
  type_4 *var_7;
  type_1 *var_8;
  int var_3;
  type_1 *var_11;
  bool var_9;
  bool var_12;
  bool var_21;
  bool var_13;
  type_1 bVar24;
  bool local_49;
  type_10 *local_38;
  type_10 *os;
  
  bVar24 = 0;
  var_1();
  pbVar1 = var_2 + var_3 + 0xc2;
  if ((var_4 & 2) != 0) goto LAB_000ad790;
  var_5 = *(type_4 ***)(*(int *)pbVar1 + 8);
  var_9 = false;
  var_13 = var_5 == (type_4 **)0x0;
  if (var_13) goto LAB_000adfbd;
  var_6 = 5;
  var_7 = var_5[0x267];
  var_8 = (type_1 *)(var_3 + 0x1ab8b3);
  do {
    if (var_6 == 0) break;
    var_6 = var_6 + -1;
    var_9 = (type_1)*var_7 < *var_8;
    var_13 = *var_7 == (type_4)*var_8;
    var_7 = var_7 + (type_13)bVar24 * -2 + 1;
    var_8 = var_8 + (type_13)bVar24 * -2 + 1;
  } while (var_13);
  var_12 = false;
  var_9 = (!var_9 && !var_13) == var_9;
  if (var_9) {
LAB_000ad742:
    var_9 = false;
    var_13 = *(char *)((int)var_5 + 0x3561) == '\0';
    if (var_13) {
LAB_000ad790:
      var_9 = var_10 == 0;
      var_13 = var_10 == 1;
      EVar8 = var_10;
      if (var_13) {
        var_6 = 0xb;
        var_8 = &DAT_001a7af8 + var_3;
        var_11 = (type_1 *)var_33;
        do {
          if (var_6 == 0) break;
          var_6 = var_6 + -1;
          var_9 = *var_8 < *var_11;
          var_13 = *var_8 == *var_11;
          var_8 = var_8 + (type_13)bVar24 * -2 + 1;
          var_11 = var_11 + (type_13)bVar24 * -2 + 1;
        } while (var_13);
        var_12 = false;
        var_9 = (!var_9 && !var_13) == var_9;
        if (var_9) {
          var_10 = 0xe;
          EVar8 = var_10;
        }
        else {
          var_6 = 0xe;
          var_8 = (type_1 *)(var_3 + 0x1a7b92);
          var_11 = (type_1 *)var_33;
          do {
            if (var_6 == 0) break;
            var_6 = var_6 + -1;
            var_12 = *var_8 < *var_11;
            var_9 = *var_8 == *var_11;
            var_8 = var_8 + (type_13)bVar24 * -2 + 1;
            var_11 = var_11 + (type_13)bVar24 * -2 + 1;
          } while (var_9);
          var_13 = false;
          var_9 = (!var_12 && !var_9) == var_12;
          if (var_9) {
            var_10 = 0x10;
            EVar8 = var_10;
          }
          else {
            var_6 = 0xb;
            var_8 = (type_1 *)(var_3 + 0x1a7b04);
            var_11 = (type_1 *)var_33;
            do {
              if (var_6 == 0) break;
              var_6 = var_6 + -1;
              var_13 = *var_8 < *var_11;
              var_9 = *var_8 == *var_11;
              var_8 = var_8 + (type_13)bVar24 * -2 + 1;
              var_11 = var_11 + (type_13)bVar24 * -2 + 1;
            } while (var_9);
            EVar8 = 0xf;
            if ((!var_13 && !var_9) != var_13) {
              EVar8 = var_10;
            }
          }
        }
      }
      var_10 = EVar8;
      var_14 = *(int **)(*(int *)pbVar1 + 0xc);
      if (var_14 == (int *)0x0) goto LAB_000ae083;
      os = (type_10 *)(**(type_5 **)(*var_14 + 100))(var_14,var_33,var_10,(type_14)var_4);
    }
    else {
      var_6 = 0xe;
      var_8 = (type_1 *)(var_3 + 0x1a7b84);
      var_11 = (type_1 *)var_33;
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_9 = *var_8 < *var_11;
        var_13 = *var_8 == *var_11;
        var_8 = var_8 + (type_13)bVar24 * -2 + 1;
        var_11 = var_11 + (type_13)bVar24 * -2 + 1;
      } while (var_13);
      var_12 = false;
      var_9 = (!var_9 && !var_13) == var_9;
      if (var_9) {
        var_20 = (type_11 *)var_15(0x118);
                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */
        Output_section::type_10((type_10 *)var_20,var_33,var_10,var_4);
        (var_20->data_).super__Vector_base<var_17,var_28::var_16<var_17>var_18>._M_impl.
        _M_start = (type_15)0x0;
        (var_20->data_).super__Vector_base<var_17,var_28::var_16<var_17>var_18>._M_impl.
        _M_finish = (type_15)0x0;
        (var_20->super_Output_section).super_Output_data._vptr_Output_data =
             (type_4 **)(var_3 + 0x28dddb);
        p_Var3 = &(var_20->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;
        (var_20->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =
             &p_Var3->_M_header;
        (var_20->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =
             &p_Var3->_M_header;
        (var_20->data_).super__Vector_base<var_17,var_28::var_16<var_17>var_18>._M_impl.
        _M_end_of_storage = (type_15)0x0;
        this->debug_abbrev_ = var_20;
        var_19 = this->debug_info_;
        (var_20->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;
        (var_20->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =
             (type_16)0x0;
        (var_20->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;
        var_20->sized_ = false;
        var_20->abbrev_count_ = 0;
        var_20->failed_ = false;
        puVar2 = &(var_20->super_Output_section).field_0x90;
        *puVar2 = *puVar2 | 0x30;
        os = (type_10 *)var_20;
        if (var_19 != (type_12 *)0x0) {
          var_19->associated_abbrev_ = var_20;
        }
      }
      else {
        var_6 = 0xc;
        var_8 = (type_1 *)(var_3 + 0x1a6604);
        var_11 = (type_1 *)var_33;
        do {
          if (var_6 == 0) break;
          var_6 = var_6 + -1;
          var_12 = *var_8 < *var_11;
          var_9 = *var_8 == *var_11;
          var_8 = var_8 + (type_13)bVar24 * -2 + 1;
          var_11 = var_11 + (type_13)bVar24 * -2 + 1;
        } while (var_9);
        if ((!var_12 && !var_9) != var_12) goto LAB_000ad790;
        var_19 = (type_12 *)var_15(0xfc);
                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */
        Output_section::type_10((type_10 *)var_19,var_33,var_10,var_4);
        (var_19->data_).super__Vector_base<var_17,var_28::var_16<var_17>var_18>._M_impl.
        _M_start = (type_15)0x0;
        var_19->failed_ = false;
        (var_19->super_Output_section).super_Output_data._vptr_Output_data =
             (type_4 **)(var_3 + 0x28de37);
        (var_19->data_).super__Vector_base<var_17,var_28::var_16<var_17>var_18>._M_impl.
        _M_finish = (type_15)0x0;
        this->debug_info_ = var_19;
        var_20 = this->debug_abbrev_;
        (var_19->data_).super__Vector_base<var_17,var_28::var_16<var_17>var_18>._M_impl.
        _M_end_of_storage = (type_15)0x0;
        puVar2 = &(var_19->super_Output_section).field_0x90;
        *puVar2 = *puVar2 | 0x30;
        os = (type_10 *)var_19;
        if (var_20 != (type_11 *)0x0) {
          var_19->associated_abbrev_ = var_20;
        }
      }
    }
  }
  else {
    var_6 = 6;
    var_8 = &DAT_0019de84 + var_3;
    var_11 = (type_1 *)var_33;
    do {
      if (var_6 == 0) break;
      var_6 = var_6 + -1;
      var_12 = *var_8 < *var_11;
      var_9 = *var_8 == *var_11;
      var_8 = var_8 + (type_13)bVar24 * -2 + 1;
      var_11 = var_11 + (type_13)bVar24 * -2 + 1;
    } while (var_9);
    if ((!var_12 && !var_9) != var_12) goto LAB_000ad742;
    pOVar12 = (type_10 *)var_15(0x108);
                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */
    Output_section::type_10(pOVar12,var_33,var_10,var_4);
    *(type_14 *)&pOVar12[1].super_Output_data.data_size_ = 0;
    *(type_2 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4) = 0;
    (pOVar12->super_Output_data)._vptr_Output_data = (type_4 **)(var_3 + 0x28e307);
    pOVar12->field_0x90 = pOVar12->field_0x90 | 0x30;
    pOVar12[1].super_Output_data._vptr_Output_data = var_5;
    *(type_2 **)((int)&pOVar12[1].super_Output_data.address_ + 4) =
         (type_2 *)((int)&pOVar12[1].super_Output_data.data_size_ + 4);
    os = pOVar12;
  }
  local_38 = os;
  local_49 = is_relro;
  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {
    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;
    var_9 = (bool)((var_4 & 2) != 0 & *(type_1 *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9));
    if ((var_9 == false) || ((var_4 & 1) == 0)) goto LAB_000ad7d9;
    if (var_10 == 1) {
      var_13 = false;
      var_12 = (var_4 & 0x400) == 0;
      if (!var_12) goto LAB_000ad7df;
      var_6 = 0xd;
      var_8 = (type_1 *)var_33;
      var_11 = (type_1 *)(var_3 + 0x1a4b74);
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_13 = *var_8 < *var_11;
        var_12 = *var_8 == *var_11;
        var_8 = var_8 + (type_13)bVar24 * -2 + 1;
        var_11 = var_11 + (type_13)bVar24 * -2 + 1;
      } while (var_12);
      var_21 = false;
      var_13 = (!var_13 && !var_12) == var_13;
      if (var_13) goto LAB_000ad7df;
      var_6 = 0x13;
      var_8 = (type_1 *)var_33;
      var_11 = (type_1 *)(var_3 + 0x1a7ba1);
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_21 = *var_8 < *var_11;
        var_13 = *var_8 == *var_11;
        var_8 = var_8 + (type_13)bVar24 * -2 + 1;
        var_11 = var_11 + (type_13)bVar24 * -2 + 1;
      } while (var_13);
      var_12 = false;
      var_13 = (!var_21 && !var_13) == var_21;
      if (!var_13) {
        var_6 = 7;
        var_8 = (type_1 *)var_33;
        var_11 = &DAT_001a7af1 + var_3;
        do {
          if (var_6 == 0) break;
          var_6 = var_6 + -1;
          var_12 = *var_8 < *var_11;
          var_13 = *var_8 == *var_11;
          var_8 = var_8 + (type_13)bVar24 * -2 + 1;
          var_11 = var_11 + (type_13)bVar24 * -2 + 1;
        } while (var_13);
        var_9 = false;
        var_13 = (!var_12 && !var_13) == var_12;
        if (!var_13) {
          var_6 = 7;
          var_8 = (type_1 *)var_33;
          var_11 = (type_1 *)(var_3 + 0x1a7b10);
          do {
            if (var_6 == 0) break;
            var_6 = var_6 + -1;
            var_9 = *var_8 < *var_11;
            var_13 = *var_8 == *var_11;
            var_8 = var_8 + (type_13)bVar24 * -2 + 1;
            var_11 = var_11 + (type_13)bVar24 * -2 + 1;
          } while (var_13);
          if (((!var_9 && !var_13) != var_9) &&
             (var_6 = var_22(var_33,&DAT_001a7bb4 + var_3), var_6 != 0)) goto LAB_000ad7d9;
        }
        goto LAB_000ad7df;
      }
    }
    else {
      if (2 < var_10 - 0xe) goto LAB_000ad7d9;
LAB_000ad7df:
      local_49 = false;
      var_9 = local_49;
    }
    local_49 = var_9;
    local_38->field_0x91 = local_38->field_0x91 | 0x20;
  }
  else {
LAB_000ad7d9:
    if (is_relro) goto LAB_000ad7df;
  }
  if ((var_23 == var_24) && ((var_4 & 2) != 0)) {
    var_23 = var_25(this,local_38,local_49);
    local_38 = os;
  }
  local_38->order_ = var_23;
  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;
  var_26 = *(type_5 **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);
  if (var_26 != (type_5 *)(var_3 + -0x58979)) {
    (*var_26)();
  }
  __position._M_current =
       (this->section_list_).
       super__Vector_base<var_27::type_10*,var_28::var_16<var_27::type_10*>var_18>._M_impl.
       _M_finish;
  if (__position._M_current ==
      (this->section_list_).
      super__Vector_base<var_27::type_10*,var_28::var_16<var_27::type_10*>var_18>._M_impl.
      _M_end_of_storage) {
    std::vector<var_27::type_10*,var_28::var_16<var_27::type_10*>var_18>::
    _M_realloc_insert<var_27::type_10*var_29&>(&this->section_list_,__position,&os);
  }
  else {
    *__position._M_current = os;
    (this->section_list_).
    super__Vector_base<var_27::type_10*,var_28::var_16<var_27::type_10*>var_18>._M_impl.
    _M_finish = __position._M_current + 1;
  }
  pOVar12 = os;
  pSVar7 = this->script_options_;
  var_6 = *(int *)(*(int *)pbVar1 + 8);
  if ((pSVar7->script_sections_).saw_sections_clause_ == false) {
    if (var_6 == 0) {
LAB_000adfbd:
                    /* WARNING: Subroutine does not return */
      var_30((char *)(var_3 + 0x198bb4),0x5c,(char *)(var_3 + 0x1a8e6f));
    }
    var_9 = false;
    var_13 = *(char *)(var_6 + 0x318d) == '\0';
    if (!var_13) goto LAB_000ad8b2;
    var_31 = 0xc;
    var_8 = (type_1 *)var_33;
    var_11 = &DAT_001a7af8 + var_3;
    do {
      if (var_31 == 0) break;
      var_31 = var_31 + -1;
      var_9 = *var_8 < *var_11;
      var_13 = *var_8 == *var_11;
      var_8 = var_8 + (type_13)bVar24 * -2 + 1;
      var_11 = var_11 + (type_13)bVar24 * -2 + 1;
    } while (var_13);
    var_12 = false;
    var_9 = (!var_9 && !var_13) == var_9;
    if (var_9) {
LAB_000ad8a8:
      os->field_0x91 = os->field_0x91 | 4;
    }
    else {
      var_31 = 0xc;
      var_8 = (type_1 *)var_33;
      var_11 = (type_1 *)(var_3 + 0x1a7b04);
      do {
        if (var_31 == 0) break;
        var_31 = var_31 + -1;
        var_12 = *var_8 < *var_11;
        var_9 = *var_8 == *var_11;
        var_8 = var_8 + (type_13)bVar24 * -2 + 1;
        var_11 = var_11 + (type_13)bVar24 * -2 + 1;
      } while (var_9);
      if ((!var_12 && !var_9) == var_12) goto LAB_000ad8a8;
      var_9 = false;
      var_13 = *(char *)(var_6 + 0xad5) == '\0';
      if (var_13) {
        var_31 = 7;
        var_8 = (type_1 *)var_33;
        var_11 = &DAT_001a7af1 + var_3;
        do {
          if (var_31 == 0) break;
          var_31 = var_31 + -1;
          var_9 = *var_8 < *var_11;
          var_13 = *var_8 == *var_11;
          var_8 = var_8 + (type_13)bVar24 * -2 + 1;
          var_11 = var_11 + (type_13)bVar24 * -2 + 1;
        } while (var_13);
        var_12 = false;
        var_9 = (!var_9 && !var_13) == var_9;
        if (!var_9) {
          var_31 = 7;
          var_8 = (type_1 *)var_33;
          var_11 = (type_1 *)(var_3 + 0x1a7b10);
          do {
            if (var_31 == 0) break;
            var_31 = var_31 + -1;
            var_12 = *var_8 < *var_11;
            var_9 = *var_8 == *var_11;
            var_8 = var_8 + (type_13)bVar24 * -2 + 1;
            var_11 = var_11 + (type_13)bVar24 * -2 + 1;
          } while (var_9);
          if ((!var_12 && !var_9) != var_12) goto LAB_000ad8b2;
        }
        goto LAB_000ad8a8;
      }
    }
LAB_000ad8b2:
    var_9 = *(char *)(var_6 + 0x3ced) == '\0';
    if (((!var_9) && (var_9 = (pSVar7->script_sections_).saw_sections_clause_ == false, var_9))
       && (var_9 = this->section_ordering_specified_ == false, var_9)) {
      var_13 = false;
      var_9 = *(char *)(var_6 + 0x318d) == '\0';
      if (var_9) {
        var_31 = 6;
        var_8 = (type_1 *)var_33;
        var_11 = &DAT_0019defb + var_3;
        do {
          if (var_31 == 0) break;
          var_31 = var_31 + -1;
          var_13 = *var_8 < *var_11;
          var_9 = *var_8 == *var_11;
          var_8 = var_8 + (type_13)bVar24 * -2 + 1;
          var_11 = var_11 + (type_13)bVar24 * -2 + 1;
        } while (var_9);
        var_9 = (!var_13 && !var_9) == var_13;
        if (var_9) {
          puVar2 = &os->field_0x91;
          *puVar2 = *puVar2 | 4;
          var_9 = *puVar2 == '\0';
        }
      }
    }
  }
  else {
    var_9 = var_6 == 0;
    if (var_9) goto LAB_000adfbd;
  }
  local_38 = os;
  var_13 = false;
  var_31 = 5;
  var_8 = *(type_1 **)(var_6 + 0x3820);
  var_11 = &DAT_001ab0cb + var_3;
  do {
    if (var_31 == 0) break;
    var_31 = var_31 + -1;
    var_13 = *var_8 < *var_11;
    var_9 = *var_8 == *var_11;
    var_8 = var_8 + (type_13)bVar24 * -2 + 1;
    var_11 = var_11 + (type_13)bVar24 * -2 + 1;
  } while (var_9);
  if ((!var_13 && !var_9) == var_13) {
    os->field_0x91 = os->field_0x91 | 8;
  }
  if (var_10 == 3) {
    var_9 = false;
    var_13 = this->have_stabstr_section_ == false;
    if (var_13) {
      var_6 = 5;
      var_8 = (type_1 *)var_33;
      var_11 = &DAT_0019deab + var_3;
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_9 = *var_8 < *var_11;
        var_13 = *var_8 == *var_11;
        var_8 = var_8 + (type_13)bVar24 * -2 + 1;
        var_11 = var_11 + (type_13)bVar24 * -2 + 1;
      } while (var_13);
      if ((!var_9 && !var_13) == var_9) {
        var_34 = var_32(var_33);
        var_9 = (type_2 *)0xffffffef < &stack0xffffffa4;
        var_13 = &stack0x00000000 == (type_2 *)0x4c;
        var_6 = 4;
        var_8 = (type_1 *)(var_33 + (var_34 - 3));
        var_11 = (type_1 *)(var_3 + 0x1af75d);
        do {
          if (var_6 == 0) break;
          var_6 = var_6 + -1;
          var_9 = *var_8 < *var_11;
          var_13 = *var_8 == *var_11;
          var_8 = var_8 + (type_13)bVar24 * -2 + 1;
          var_11 = var_11 + (type_13)bVar24 * -2 + 1;
        } while (var_13);
        if ((!var_9 && !var_13) == var_9) {
          this->have_stabstr_section_ = true;
        }
      }
    }
  }
  else if ((var_10 == 1) || (var_10 == 8)) {
    var_9 = var_23 < var_35;
    var_13 = var_23 == var_35;
    if ((var_35 < var_23) ||
       (var_9 = (0x3020c2U >> (var_23 & (var_36|var_37)) & 1) != 0, !var_9))
    {
      var_6 = 10;
      var_8 = (type_1 *)var_33;
      var_11 = (type_1 *)(var_3 + 0x1a0735);
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_9 = *var_8 < *var_11;
        var_13 = *var_8 == *var_11;
        var_8 = var_8 + (type_13)bVar24 * -2 + 1;
        var_11 = var_11 + (type_13)bVar24 * -2 + 1;
      } while (var_13);
      var_12 = false;
      var_9 = (!var_9 && !var_13) == var_9;
      if (!var_9) {
        var_6 = 7;
        var_8 = (type_1 *)var_33;
        var_11 = &DAT_001a7af1 + var_3;
        do {
          if (var_6 == 0) break;
          var_6 = var_6 + -1;
          var_12 = *var_8 < *var_11;
          var_9 = *var_8 == *var_11;
          var_8 = var_8 + (type_13)bVar24 * -2 + 1;
          var_11 = var_11 + (type_13)bVar24 * -2 + 1;
        } while (var_9);
        var_13 = false;
        var_9 = (!var_12 && !var_9) == var_12;
        if (!var_9) {
          var_6 = 7;
          var_8 = (type_1 *)var_33;
          var_11 = (type_1 *)(var_3 + 0x1a7b10);
          do {
            if (var_6 == 0) break;
            var_6 = var_6 + -1;
            var_13 = *var_8 < *var_11;
            var_9 = *var_8 == *var_11;
            var_8 = var_8 + (type_13)bVar24 * -2 + 1;
            var_11 = var_11 + (type_13)bVar24 * -2 + 1;
          } while (var_9);
          var_12 = false;
          var_9 = (!var_13 && !var_9) == var_13;
          if (!var_9) {
            var_6 = 5;
            var_8 = (type_1 *)var_33;
            var_11 = &DAT_001a7bb4 + var_3;
            do {
              if (var_6 == 0) break;
              var_6 = var_6 + -1;
              var_12 = *var_8 < *var_11;
              var_9 = *var_8 == *var_11;
              var_8 = var_8 + (type_13)bVar24 * -2 + 1;
              var_11 = var_11 + (type_13)bVar24 * -2 + 1;
            } while (var_9);
            if ((!var_12 && !var_9) != var_12) {
              var_6 = 0xc;
              puVar2 = &os->field_0x92;
              var_9 = false;
              *puVar2 = *puVar2 | 0x40;
              var_13 = *puVar2 == '\0';
              var_8 = (type_1 *)var_33;
              var_11 = (type_1 *)(var_3 + 0x1a6604);
              do {
                if (var_6 == 0) break;
                var_6 = var_6 + -1;
                var_9 = *var_8 < *var_11;
                var_13 = *var_8 == *var_11;
                var_8 = var_8 + (type_13)bVar24 * -2 + 1;
                var_11 = var_11 + (type_13)bVar24 * -2 + 1;
              } while (var_13);
              var_12 = false;
              var_9 = (!var_9 && !var_13) == var_9;
              if (var_9) {
                pOVar9 = (type_9 *)var_15(8);
                ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (type_4 **)(var_3 + 0x28d063);
                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */
                  var_30((char *)(var_3 + 0x198bb4),0x69,
                                      (char *)(var_3 + 0x1a8e1f));
                }
                var_9 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);
                pOVar9->field_0x5 = 0;
                pOVar9->is_big_endian_ = var_9;
                ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (type_4 **)(var_3 + 0x286dc7);
LAB_000ae026:
                pOVar12->free_space_fill_ = pOVar9;
                sVar10 = type_17::var_38
                                   ((type_17 *)pOVar9);
              }
              else {
                var_6 = 0xd;
                var_8 = (type_1 *)var_33;
                var_11 = (type_1 *)(var_3 + 0x1a6610);
                do {
                  if (var_6 == 0) break;
                  var_6 = var_6 + -1;
                  var_12 = *var_8 < *var_11;
                  var_9 = *var_8 == *var_11;
                  var_8 = var_8 + (type_13)bVar24 * -2 + 1;
                  var_11 = var_11 + (type_13)bVar24 * -2 + 1;
                } while (var_9);
                var_13 = false;
                var_9 = (!var_12 && !var_9) == var_12;
                if (var_9) {
                  pOVar9 = (type_9 *)var_15(8);
                  ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                       (type_4 **)(var_3 + 0x28d063);
                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */
                    var_30((char *)(var_3 + 0x198bb4),0x69,
                                        (char *)(var_3 + 0x1a8e1f));
                  }
                  var_9 = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);
                  pOVar9->field_0x5 = 1;
                  pOVar9->is_big_endian_ = var_9;
                  ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                       (type_4 **)(var_3 + 0x286dc7);
                  goto LAB_000ae026;
                }
                var_6 = 0xc;
                var_8 = (type_1 *)(var_3 + 0x1a7bb9);
                do {
                  if (var_6 == 0) break;
                  var_6 = var_6 + -1;
                  var_13 = (type_1)*var_33 < *var_8;
                  var_9 = *var_33 == *var_8;
                  var_33 = (char *)((type_1 *)var_33 + (type_13)bVar24 * -2 + 1);
                  var_8 = var_8 + (type_13)bVar24 * -2 + 1;
                } while (var_9);
                if ((!var_13 && !var_9) != var_13) goto LAB_000ad932;
                pOVar9 = (type_9 *)var_15(8);
                ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (type_4 **)(var_3 + 0x28d063);
                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */
                  var_30((char *)(var_3 + 0x198bb4),0x69,
                                      (char *)(var_3 + 0x1a8e1f));
                }
                pOVar9->is_big_endian_ = *(bool *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4)
                ;
                ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (type_4 **)(var_3 + 0x286ddf);
                pOVar12->free_space_fill_ = pOVar9;
                sVar10 = type_18::var_38
                                   ((type_18 *)pOVar9);
              }
              *(size_t *)&(pOVar12->free_list_).min_hole_ = sVar10;
              local_38 = os;
              *(type_14 *)((int)&(pOVar12->free_list_).min_hole_ + 4) = 0;
            }
          }
        }
      }
    }
  }
LAB_000ad932:
  if (this->sections_are_attached_ != false) {
    if (*(type_19 **)(*(int *)pbVar1 + 0xc) == (type_19 *)0x0) {
LAB_000ae083:
                    /* WARNING: Subroutine does not return */
      var_30((char *)(var_3 + 0x198bb4),0x69,(char *)(var_3 + 0x1a8e1f));
    }
    var_39(this,*(type_19 **)(*(int *)pbVar1 + 0xc),local_38);
    local_38 = os;
  }
  return local_38;
}


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

int * MASKED(int param_1,byte *param_2,int param_3,uint param_4,undefined4 param_5,
                  uint param_6,char param_7)

{
  byte *pbVar1;
  undefined1 uVar2;
  code *pcVar3;
  undefined4 *puVar4;
  int *piVar5;
  size_t sVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  byte *pbVar11;
  int unaff_EDI;
  byte *pbVar12;
  bool bVar13;
  bool bVar14;
  bool bVar15;
  byte bVar16;
  int *local_20;
  
  bVar16 = 0;
  FUN_00058c4a();
  pbVar1 = BYTE_ARRAY_00291b75 + unaff_EDI + 0xc2;
  uVar10 = param_4 & 2;
  if (uVar10 != 0) goto LAB_000ad790;
  iVar8 = *(int *)(*(int *)pbVar1 + 8);
  bVar13 = false;
  bVar15 = iVar8 == 0;
  if (bVar15) goto LAB_000adfbd;
  iVar7 = 5;
  pbVar11 = *(byte **)(iVar8 + 0x99c);
  pbVar12 = (byte *)(unaff_EDI + 0x1ab8b3);
  do {
    if (iVar7 == 0) break;
    iVar7 = iVar7 + -1;
    bVar13 = *pbVar11 < *pbVar12;
    bVar15 = *pbVar11 == *pbVar12;
    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
  } while (bVar15);
  bVar14 = false;
  bVar13 = (!bVar13 && !bVar15) == bVar13;
  if (bVar13) {
LAB_000ad742:
    bVar13 = false;
    bVar15 = *(char *)(iVar8 + 0x3561) == '\0';
    if (bVar15) {
LAB_000ad790:
      bVar13 = param_3 == 0;
      bVar15 = param_3 == 1;
      iVar8 = param_3;
      if (bVar15) {
        iVar8 = 0xb;
        pbVar11 = &DAT_001a7af8 + unaff_EDI;
        pbVar12 = param_2;
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar13 = *pbVar11 < *pbVar12;
          bVar15 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar15);
        bVar14 = false;
        bVar13 = (!bVar13 && !bVar15) == bVar13;
        if (bVar13) {
          param_3 = 0xe;
          iVar8 = param_3;
        }
        else {
          iVar8 = 0xe;
          pbVar11 = (byte *)(unaff_EDI + 0x1a7b92);
          pbVar12 = param_2;
          do {
            if (iVar8 == 0) break;
            iVar8 = iVar8 + -1;
            bVar14 = *pbVar11 < *pbVar12;
            bVar13 = *pbVar11 == *pbVar12;
            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
          } while (bVar13);
          bVar15 = false;
          bVar13 = (!bVar14 && !bVar13) == bVar14;
          if (bVar13) {
            param_3 = 0x10;
            iVar8 = param_3;
          }
          else {
            iVar8 = 0xb;
            pbVar11 = (byte *)(unaff_EDI + 0x1a7b04);
            pbVar12 = param_2;
            do {
              if (iVar8 == 0) break;
              iVar8 = iVar8 + -1;
              bVar15 = *pbVar11 < *pbVar12;
              bVar13 = *pbVar11 == *pbVar12;
              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
            } while (bVar13);
            iVar8 = 0xf;
            if ((!bVar15 && !bVar13) != bVar15) {
              iVar8 = param_3;
            }
          }
        }
      }
      param_3 = iVar8;
      piVar5 = *(int **)(*(int *)pbVar1 + 0xc);
      if (piVar5 == (int *)0x0) goto LAB_000ae083;
      local_20 = (int *)(**(code **)(*piVar5 + 100))(piVar5,param_2,param_3,param_4);
    }
    else {
      iVar8 = 0xe;
      pbVar11 = (byte *)(unaff_EDI + 0x1a7b84);
      pbVar12 = param_2;
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar13 = *pbVar11 < *pbVar12;
        bVar15 = *pbVar11 == *pbVar12;
        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
      } while (bVar15);
      bVar14 = false;
      bVar13 = (!bVar13 && !bVar15) == bVar13;
      if (bVar13) {
        local_20 = (int *)FUN_001aa8c0();
                    /* try { // try from 000add6a to 000add6e has its CatchHandler @ 000ae0f5 */
        FUN_000e88d0(local_20,param_2,param_3,param_4);
        local_20[0x3a] = 0;
        local_20[0x3b] = 0;
        *local_20 = unaff_EDI + 0x28dddb;
        local_20[0x40] = (int)(local_20 + 0x3e);
        local_20[0x41] = (int)(local_20 + 0x3e);
        local_20[0x3c] = 0;
        *(int **)(param_1 + 0x1a8) = local_20;
        iVar8 = *(int *)(param_1 + 0x1ac);
        local_20[0x3e] = 0;
        local_20[0x3f] = 0;
        local_20[0x42] = 0;
        *(undefined1 *)(local_20 + 0x43) = 0;
        local_20[0x44] = 0;
        *(undefined1 *)(local_20 + 0x45) = 0;
        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;
        if (iVar8 != 0) {
          *(int **)(iVar8 + 0xf4) = local_20;
        }
      }
      else {
        iVar8 = 0xc;
        pbVar11 = (byte *)(unaff_EDI + 0x1a6604);
        pbVar12 = param_2;
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar14 = *pbVar11 < *pbVar12;
          bVar13 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar13);
        if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad790;
        local_20 = (int *)FUN_001aa8c0();
                    /* try { // try from 000ade32 to 000ade36 has its CatchHandler @ 000ae0e7 */
        FUN_000e88d0(local_20,param_2,param_3,param_4);
        local_20[0x3a] = 0;
        *(undefined1 *)(local_20 + 0x3e) = 0;
        *local_20 = unaff_EDI + 0x28de37;
        local_20[0x3b] = 0;
        *(int **)(param_1 + 0x1ac) = local_20;
        iVar8 = *(int *)(param_1 + 0x1a8);
        local_20[0x3c] = 0;
        *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;
        if (iVar8 != 0) {
          local_20[0x3d] = iVar8;
        }
      }
    }
  }
  else {
    iVar7 = 6;
    pbVar11 = &DAT_0019de84 + unaff_EDI;
    pbVar12 = param_2;
    do {
      if (iVar7 == 0) break;
      iVar7 = iVar7 + -1;
      bVar14 = *pbVar11 < *pbVar12;
      bVar13 = *pbVar11 == *pbVar12;
      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
    } while (bVar13);
    if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad742;
    local_20 = (int *)FUN_001aa8c0();
                    /* try { // try from 000adcfd to 000add01 has its CatchHandler @ 000ae0fc */
    FUN_000e88d0(local_20,param_2,param_3,param_4);
    local_20[0x3d] = 0;
    *(undefined1 *)(local_20 + 0x3e) = 0;
    *local_20 = unaff_EDI + 0x28e307;
    *(byte *)(local_20 + 0x24) = *(byte *)(local_20 + 0x24) | 0x30;
    local_20[0x3a] = iVar8;
    local_20[0x3c] = (int)(local_20 + 0x3e);
  }
  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {
    if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_000adfbd;
    if (((uVar10 != 0 & *(byte *)(*(int *)(*(int *)pbVar1 + 8) + 0x56b9)) == 0) ||
       ((param_4 & 1) == 0)) goto LAB_000ad7d9;
    if (param_3 == 1) {
      bVar13 = false;
      bVar15 = (param_4 & 0x400) == 0;
      if (bVar15) {
        iVar8 = 0xd;
        pbVar11 = param_2;
        pbVar12 = (byte *)(unaff_EDI + 0x1a4b74);
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar13 = *pbVar11 < *pbVar12;
          bVar15 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar15);
        bVar14 = false;
        bVar13 = (!bVar13 && !bVar15) == bVar13;
        if (!bVar13) {
          iVar8 = 0x13;
          pbVar11 = param_2;
          pbVar12 = (byte *)(unaff_EDI + 0x1a7ba1);
          do {
            if (iVar8 == 0) break;
            iVar8 = iVar8 + -1;
            bVar14 = *pbVar11 < *pbVar12;
            bVar13 = *pbVar11 == *pbVar12;
            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
          } while (bVar13);
          bVar15 = false;
          bVar13 = (!bVar14 && !bVar13) == bVar14;
          if (!bVar13) {
            iVar8 = 7;
            pbVar11 = param_2;
            pbVar12 = &DAT_001a7af1 + unaff_EDI;
            do {
              if (iVar8 == 0) break;
              iVar8 = iVar8 + -1;
              bVar15 = *pbVar11 < *pbVar12;
              bVar13 = *pbVar11 == *pbVar12;
              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
            } while (bVar13);
            bVar14 = false;
            bVar13 = (!bVar15 && !bVar13) == bVar15;
            if (!bVar13) {
              iVar8 = 7;
              pbVar11 = param_2;
              pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);
              do {
                if (iVar8 == 0) break;
                iVar8 = iVar8 + -1;
                bVar14 = *pbVar11 < *pbVar12;
                bVar13 = *pbVar11 == *pbVar12;
                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
              } while (bVar13);
              if (((!bVar14 && !bVar13) != bVar14) &&
                 (iVar8 = strcmp((char *)param_2,&DAT_001a7bb4 + unaff_EDI), iVar8 != 0))
              goto LAB_000ad7d9;
            }
          }
        }
      }
    }
    else if (2 < param_3 - 0xeU) goto LAB_000ad7d9;
LAB_000ad7e3:
    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 0x20;
  }
  else {
LAB_000ad7d9:
    if (param_7 != '\0') goto LAB_000ad7e3;
  }
  if ((param_6 == 0) && (uVar10 != 0)) {
    param_6 = FUN_000a9050();
  }
  local_20[0x17] = param_6;
  if (*(int **)(*(int *)pbVar1 + 0xc) == (int *)0x0) goto LAB_000ae083;
  pcVar3 = *(code **)(**(int **)(*(int *)pbVar1 + 0xc) + 0xc);
  if (pcVar3 != (code *)(unaff_EDI + -0x58979)) {
    (*pcVar3)();
  }
  puVar4 = *(undefined4 **)(param_1 + 0x134);
  if (puVar4 == *(undefined4 **)(param_1 + 0x138)) {
    FUN_000b7440();
  }
  else {
    *puVar4 = local_20;
    *(undefined4 **)(param_1 + 0x134) = puVar4 + 1;
  }
  iVar8 = *(int *)(param_1 + 4);
  iVar7 = *(int *)(*(int *)pbVar1 + 8);
  if (*(char *)(iVar8 + 0xac) == '\0') {
    if (iVar7 == 0) {
LAB_000adfbd:
                    /* WARNING: Subroutine does not return */
      FUN_0008b620();
    }
    bVar13 = false;
    bVar15 = *(char *)(iVar7 + 0x318d) == '\0';
    if (!bVar15) goto LAB_000ad8b2;
    iVar9 = 0xc;
    pbVar11 = param_2;
    pbVar12 = &DAT_001a7af8 + unaff_EDI;
    do {
      if (iVar9 == 0) break;
      iVar9 = iVar9 + -1;
      bVar13 = *pbVar11 < *pbVar12;
      bVar15 = *pbVar11 == *pbVar12;
      pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
      pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
    } while (bVar15);
    bVar14 = false;
    bVar13 = (!bVar13 && !bVar15) == bVar13;
    if (bVar13) {
LAB_000ad8a8:
      *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 4;
    }
    else {
      iVar9 = 0xc;
      pbVar11 = param_2;
      pbVar12 = (byte *)(unaff_EDI + 0x1a7b04);
      do {
        if (iVar9 == 0) break;
        iVar9 = iVar9 + -1;
        bVar14 = *pbVar11 < *pbVar12;
        bVar13 = *pbVar11 == *pbVar12;
        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
      } while (bVar13);
      if ((!bVar14 && !bVar13) == bVar14) goto LAB_000ad8a8;
      bVar13 = false;
      bVar15 = *(char *)(iVar7 + 0xad5) == '\0';
      if (bVar15) {
        iVar9 = 7;
        pbVar11 = param_2;
        pbVar12 = &DAT_001a7af1 + unaff_EDI;
        do {
          if (iVar9 == 0) break;
          iVar9 = iVar9 + -1;
          bVar13 = *pbVar11 < *pbVar12;
          bVar15 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar15);
        bVar14 = false;
        bVar13 = (!bVar13 && !bVar15) == bVar13;
        if (!bVar13) {
          iVar9 = 7;
          pbVar11 = param_2;
          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);
          do {
            if (iVar9 == 0) break;
            iVar9 = iVar9 + -1;
            bVar14 = *pbVar11 < *pbVar12;
            bVar13 = *pbVar11 == *pbVar12;
            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
          } while (bVar13);
          if ((!bVar14 && !bVar13) != bVar14) goto LAB_000ad8b2;
        }
        goto LAB_000ad8a8;
      }
    }
LAB_000ad8b2:
    bVar13 = *(char *)(iVar7 + 0x3ced) == '\0';
    if (((!bVar13) && (bVar13 = *(char *)(iVar8 + 0xac) == '\0', bVar13)) &&
       (bVar13 = *(char *)(param_1 + 0x1cd) == '\0', bVar13)) {
      bVar15 = false;
      bVar13 = *(char *)(iVar7 + 0x318d) == '\0';
      if (bVar13) {
        iVar8 = 6;
        pbVar11 = param_2;
        pbVar12 = &DAT_0019defb + unaff_EDI;
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar15 = *pbVar11 < *pbVar12;
          bVar13 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar13);
        bVar13 = (!bVar15 && !bVar13) == bVar15;
        if (bVar13) {
          pbVar11 = (byte *)((int)local_20 + 0x91);
          *pbVar11 = *pbVar11 | 4;
          bVar13 = *pbVar11 == 0;
        }
      }
    }
  }
  else {
    bVar13 = iVar7 == 0;
    if (bVar13) goto LAB_000adfbd;
  }
  bVar15 = false;
  iVar8 = 5;
  pbVar11 = *(byte **)(iVar7 + 0x3820);
  pbVar12 = &DAT_001ab0cb + unaff_EDI;
  do {
    if (iVar8 == 0) break;
    iVar8 = iVar8 + -1;
    bVar15 = *pbVar11 < *pbVar12;
    bVar13 = *pbVar11 == *pbVar12;
    pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
    pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
  } while (bVar13);
  if ((!bVar15 && !bVar13) == bVar15) {
    *(byte *)((int)local_20 + 0x91) = *(byte *)((int)local_20 + 0x91) | 8;
  }
  if (param_3 == 3) {
    bVar13 = false;
    bVar15 = *(char *)(param_1 + 0x1cc) == '\0';
    if (bVar15) {
      iVar8 = 5;
      pbVar11 = param_2;
      pbVar12 = &DAT_0019deab + unaff_EDI;
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar13 = *pbVar11 < *pbVar12;
        bVar15 = *pbVar11 == *pbVar12;
        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
      } while (bVar15);
      if ((!bVar13 && !bVar15) == bVar13) {
        sVar6 = strlen((char *)param_2);
        bVar13 = (undefined1 *)0xffffffef < &stack0xffffffa4;
        bVar15 = &stack0x00000000 == (undefined1 *)0x4c;
        iVar8 = 4;
        pbVar11 = param_2 + (sVar6 - 3);
        pbVar12 = (byte *)(unaff_EDI + 0x1af75d);
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar13 = *pbVar11 < *pbVar12;
          bVar15 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar15);
        if ((!bVar13 && !bVar15) == bVar13) {
          *(undefined1 *)(param_1 + 0x1cc) = 1;
        }
      }
    }
  }
  else if ((param_3 == 1) || (param_3 == 8)) {
    bVar13 = param_6 < 0x15;
    bVar15 = param_6 == 0x15;
    if ((0x15 < param_6) || (bVar13 = (0x3020c2U >> (param_6 & 0x1f) & 1) != 0, !bVar13)) {
      iVar8 = 10;
      pbVar11 = param_2;
      pbVar12 = (byte *)(unaff_EDI + 0x1a0735);
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar13 = *pbVar11 < *pbVar12;
        bVar15 = *pbVar11 == *pbVar12;
        pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
        pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
      } while (bVar15);
      bVar14 = false;
      bVar13 = (!bVar13 && !bVar15) == bVar13;
      if (!bVar13) {
        iVar8 = 7;
        pbVar11 = param_2;
        pbVar12 = &DAT_001a7af1 + unaff_EDI;
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar14 = *pbVar11 < *pbVar12;
          bVar13 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
        } while (bVar13);
        bVar15 = false;
        bVar13 = (!bVar14 && !bVar13) == bVar14;
        if (!bVar13) {
          iVar8 = 7;
          pbVar11 = param_2;
          pbVar12 = (byte *)(unaff_EDI + 0x1a7b10);
          do {
            if (iVar8 == 0) break;
            iVar8 = iVar8 + -1;
            bVar15 = *pbVar11 < *pbVar12;
            bVar13 = *pbVar11 == *pbVar12;
            pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
            pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
          } while (bVar13);
          bVar14 = false;
          bVar13 = (!bVar15 && !bVar13) == bVar15;
          if (!bVar13) {
            iVar8 = 5;
            pbVar11 = param_2;
            pbVar12 = &DAT_001a7bb4 + unaff_EDI;
            do {
              if (iVar8 == 0) break;
              iVar8 = iVar8 + -1;
              bVar14 = *pbVar11 < *pbVar12;
              bVar13 = *pbVar11 == *pbVar12;
              pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
              pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
            } while (bVar13);
            if ((!bVar14 && !bVar13) != bVar14) {
              iVar8 = 0xc;
              pbVar11 = (byte *)((int)local_20 + 0x92);
              bVar13 = false;
              *pbVar11 = *pbVar11 | 0x40;
              bVar15 = *pbVar11 == 0;
              pbVar11 = param_2;
              pbVar12 = (byte *)(unaff_EDI + 0x1a6604);
              do {
                if (iVar8 == 0) break;
                iVar8 = iVar8 + -1;
                bVar13 = *pbVar11 < *pbVar12;
                bVar15 = *pbVar11 == *pbVar12;
                pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
                pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
              } while (bVar15);
              bVar14 = false;
              bVar13 = (!bVar13 && !bVar15) == bVar13;
              if (bVar13) {
                piVar5 = (int *)FUN_001aa8c0();
                *piVar5 = unaff_EDI + 0x28d063;
                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0c9 to 000ae0cd has its CatchHandler @ 000ae10a */
                  FUN_0008b620();
                }
                uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);
                *(undefined1 *)((int)piVar5 + 5) = 0;
                *(undefined1 *)(piVar5 + 1) = uVar2;
                *piVar5 = unaff_EDI + 0x286dc7;
LAB_000ae026:
                local_20[0x36] = (int)piVar5;
                iVar8 = FUN_000e6d80();
              }
              else {
                iVar8 = 0xd;
                pbVar11 = param_2;
                pbVar12 = (byte *)(unaff_EDI + 0x1a6610);
                do {
                  if (iVar8 == 0) break;
                  iVar8 = iVar8 + -1;
                  bVar14 = *pbVar11 < *pbVar12;
                  bVar13 = *pbVar11 == *pbVar12;
                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
                  pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
                } while (bVar13);
                bVar15 = false;
                bVar13 = (!bVar14 && !bVar13) == bVar14;
                if (bVar13) {
                  piVar5 = (int *)FUN_001aa8c0();
                  *piVar5 = unaff_EDI + 0x28d063;
                  if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0e2 to 000ae0e6 has its CatchHandler @ 000ae0ee */
                    FUN_0008b620();
                  }
                  uVar2 = *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);
                  *(undefined1 *)((int)piVar5 + 5) = 1;
                  *(undefined1 *)(piVar5 + 1) = uVar2;
                  *piVar5 = unaff_EDI + 0x286dc7;
                  goto LAB_000ae026;
                }
                iVar8 = 0xc;
                pbVar11 = (byte *)(unaff_EDI + 0x1a7bb9);
                do {
                  if (iVar8 == 0) break;
                  iVar8 = iVar8 + -1;
                  bVar15 = *param_2 < *pbVar11;
                  bVar13 = *param_2 == *pbVar11;
                  param_2 = param_2 + (uint)bVar16 * -2 + 1;
                  pbVar11 = pbVar11 + (uint)bVar16 * -2 + 1;
                } while (bVar13);
                if ((!bVar15 && !bVar13) != bVar15) goto LAB_000ad932;
                piVar5 = (int *)FUN_001aa8c0();
                *piVar5 = unaff_EDI + 0x28d063;
                if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000ae0b0 to 000ae0b4 has its CatchHandler @ 000ae103 */
                  FUN_0008b620();
                }
                *(undefined1 *)(piVar5 + 1) =
                     *(undefined1 *)(*(int *)(*(int *)(*(int *)pbVar1 + 0xc) + 4) + 4);
                *piVar5 = unaff_EDI + 0x286ddf;
                local_20[0x36] = (int)piVar5;
                iVar8 = FUN_000e6da0();
              }
              local_20[0x34] = iVar8;
              local_20[0x35] = 0;
            }
          }
        }
      }
    }
  }
LAB_000ad932:
  if (*(char *)(param_1 + 0x1c5) != '\0') {
    if (*(int *)(*(int *)pbVar1 + 0xc) == 0) {
LAB_000ae083:
                    /* WARNING: Subroutine does not return */
      FUN_0008b620();
    }
    FUN_000ad5f0();
  }
  return local_20;
}

