
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void scan_relocs(Target_s390<32> * this, Symbol_table * symtab, Layout
   * layout, Sized_relobj_file<32,_true> * object, uint data_shndx, uint sh_type, uchar * prelocs,
   size_t reloc_count, Output_section * output_section, bool needs_special_offset_handling, size_t
   local_symbol_count, uchar * plocal_symbols) */

void __thiscall
anon_unknown.dwarf_130c1fc::Target_s390<32>::scan_relocs
          (Target_s390<32> *this,Symbol_table *symtab,Layout *layout,
          Sized_relobj_file<32,_true> *object,uint data_shndx,uint sh_type,uchar *prelocs,
          size_t reloc_count,Output_section *output_section,bool needs_special_offset_handling,
          size_t param_10,uchar *plocal_symbols)

{
  int iVar1;
  Output_data_space *pOVar2;
  Address address;
  pointer ppOVar3;
  pointer ppSVar4;
  pointer pcVar5;
  anon_union_4_4_c82d8563_for_u1_ aVar6;
  bool bVar7;
  char *pcVar8;
  Symbol_table *symndx;
  Symbol_table *pSVar9;
  Xindex *this_00;
  Layout *symndx_00;
  Output_data_plt_s390<32> *pOVar10;
  uint uVar11;
  int unaff_EDI;
  Symbol_table *in_stack_ffffff88;
  Layout *in_stack_ffffff8c;
  Layout *layout_00;
  Layout *pLVar12;
  Output_data_plt_s390<32> *this_1;
  Symbol *gsym;
  Target_s390<32> *in_stack_ffffff94;
  Symbol_table *in_stack_ffffff98;
  Layout *in_stack_ffffff9c;
  size_t local_44;
  Scan scan;
  bool is_ordinary_1;
  bool is_ordinary;
  undefined4 local_20;
  
  __x86_get_pc_thunk_di();
  if (sh_type == 9) {
    pcVar5 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus._M_p
    ;
    pcVar8 = (char *)gettext(unaff_EDI + 0x233df7);
    gold::gold_error(pcVar8,pcVar5);
    return;
  }
  local_44 = 0;
  if (reloc_count != 0) {
    do {
      layout_00 = in_stack_ffffff8c;
      if (needs_special_offset_handling) {
        uVar11 = *(uint *)prelocs;
        bVar7 = gold::Output_section::is_input_address_mapped
                          (output_section,(Relobj *)object,data_shndx,
                           (ulonglong)
                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |
                           uVar11 << 0x18));
        layout_00 = in_stack_ffffff8c;
        if (bVar7) goto LAB_0021c6ca;
      }
      else {
LAB_0021c6ca:
        uVar11 = *(uint *)(prelocs + 4);
        pLVar12 = (Layout *)(uVar11 >> 0x18);
        symndx_00 = (Layout *)
                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);
        if (symndx_00 < param_10) {
          if (plocal_symbols == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))
            ;
          }
          in_stack_ffffff8c =
               (Layout *)
               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |
                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);
          if (in_stack_ffffff8c < (Layout *)0xff00) {
LAB_0021caf0:
            if (in_stack_ffffff8c != (Layout *)0x0) {
              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.
                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                        ._M_impl._M_start;
              if ((Layout *)
                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.
                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {
                    /* WARNING: Subroutine does not return */
                gold::do_gold_unreachable
                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));
              }
              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&
                 (in_stack_ffffff88 = (Symbol_table *)object,
                 bVar7 = gold::Symbol_table::is_section_folded
                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),
                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;
            }
          }
          else if (in_stack_ffffff8c == (Layout *)0xffff) {
            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;
            if (this_00 == (Xindex *)0x0) {
              this_00 = (Xindex *)
                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.
                          _vptr_Object[0x1b])(object);
              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;
            }
            layout_00 = symndx_00;
            in_stack_ffffff8c =
                 (Layout *)
                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);
            goto LAB_0021caf0;
          }
          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {
            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;
            bVar7 = Scan::reloc_needs_plt_for_ifunc
                              ((Scan *)in_stack_ffffff94,
                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,
                               (uint)in_stack_ffffff9c);
            if (bVar7) {
              uVar11 = *(uint *)(prelocs + 4);
              symndx = (Symbol_table *)
                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);
              pSVar9 = symndx;
              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);
              if (!bVar7) {
                pOVar10 = this->plt_;
                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {
                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;
                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);
                  pOVar10 = this->plt_;
                }
                uVar11 = pOVar10->irelative_count_;
                pOVar10->irelative_count_ = uVar11 + 1;
                pOVar2 = pOVar10->got_irelative_;
                address = (Address)(pOVar2->super_Output_section_data_build).
                                   super_Output_section_data.super_Output_data.data_size_;
                iVar1 = address + 4;
                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.
                     super_Output_data.field_0x1c & 2) != 0) {
                    /* WARNING: Subroutine does not return */
                  gold::do_gold_unreachable
                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));
                }
                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.
                         super_Output_data.data_size_ = iVar1;
                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.
                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;
                in_stack_ffffff98 =
                     (Symbol_table *)
                     Output_data_plt_s390<32>::rela_irelative
                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);
                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;
                gold::Output_reloc<9,_true,_32,_true>::Output_reloc
                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,
                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,
                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);
                local_20 = 0;
                gold::Output_data_reloc_base<4,_true,_32,_true>::add
                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,
                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);
                gold::Sized_relobj_file<32,_true>::set_local_plt_offset
                          (object,(uint)symndx,uVar11 << 5);
              }
            }
          }
          if (pLVar12 < (Layout *)0xfc) {
                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();
            return;
          }
          in_stack_ffffff88 =
               (Symbol_table *)
               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.
               _M_p;
          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);
          gold::gold_error(pcVar8);
          in_stack_ffffff8c = pLVar12;
        }
        else {
          if (symndx_00 < (Layout *)object->local_symbol_count_) {
LAB_0021dc20:
                    /* WARNING: Subroutine does not return */
            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))
            ;
          }
          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;
          ppSVar4 = (object->symbols_).
                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.
                    _M_start;
          if ((uint)((int)(object->symbols_).
                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.
                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {
                    /* WARNING: Subroutine does not return */
            gold::do_gold_unreachable
                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));
          }
          pSVar9 = (Symbol_table *)ppSVar4[uVar11];
          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;
          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {
            in_stack_ffffff88 = pSVar9;
            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);
          }
          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {
            gsym = (Symbol *)0x21d01b;
            bVar7 = Scan::reloc_needs_plt_for_ifunc
                              ((Scan *)in_stack_ffffff94,
                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,
                               (uint)in_stack_ffffff9c);
            if ((bVar7) &&
               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==
                (Output_data_plt_s390<32> *)0xffffffff)) {
              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);
            }
          }
          if (pLVar12 < (Layout *)0xfc) {
                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987
                      ))();
            return;
          }
          gold::Symbol::demangled_name((Symbol *)pSVar9);
          aVar6 = _is_ordinary;
          in_stack_ffffff88 =
               (Symbol_table *)
               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.
               _M_p;
          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);
                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */
          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);
          in_stack_ffffff8c = pLVar12;
          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {
            operator_delete(_is_ordinary);
            in_stack_ffffff8c = pLVar12;
          }
        }
      }
_L5076:
      local_44 = local_44 + 1;
      prelocs = prelocs + 0xc;
    } while (reloc_count != local_44);
  }
  return;
}



void FUN_0021c670(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,
                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,
                 uint param_11,int param_12)

{
  int iVar1;
  int iVar2;
  int iVar3;
  code *pcVar4;
  char cVar5;
  uint uVar6;
  undefined4 uVar7;
  int iVar8;
  uint uVar9;
  undefined1 *puVar10;
  undefined1 *puVar11;
  int unaff_EDI;
  int aiStackY_a0 [9];
  undefined1 auStack_6c [4];
  undefined4 local_68;
  undefined4 local_64;
  int local_60;
  int local_5c;
  int local_58;
  uint local_54;
  char local_4d;
  uint local_4c;
  undefined1 *local_48;
  int local_44;
  uint local_40;
  undefined1 local_3a;
  undefined1 *local_38 [2];
  undefined1 local_30 [16];
  undefined4 local_20;
  
  FUN_00074f0a();
  puVar10 = auStack_6c;
  local_4d = param_10;
  if (param_6 == 9) {
    iVar8 = param_4[1];
    uVar7 = gettext(unaff_EDI + 0x233df7);
    FUN_0023b810(uVar7,iVar8);
    return;
  }
  local_5c = unaff_EDI + 0x3ce14f;
  local_3a = 0;
  local_44 = 0;
  local_58 = local_5c;
  if (param_8 != 0) {
    do {
      puVar11 = puVar10;
      if (local_4d == '\0') {
LAB_0021c6ca:
        uVar9 = param_7[1];
        local_40 = uVar9 >> 0x18;
        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;
        if (uVar9 < param_11) {
          if (param_12 == 0) {
            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;
            *(undefined4 *)(puVar10 + -0xc) = 0x4d;
            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;
                    /* WARNING: Subroutine does not return */
            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;
            FUN_002446e0();
          }
          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);
          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8
                                );
          if (uVar6 < 0xff00) {
LAB_0021caf0:
            if (uVar6 != 0) {
              local_4c = param_4[0xf];
              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {
                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;
                *(undefined4 *)(puVar10 + -0xc) = 0x50b;
                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;
                    /* WARNING: Subroutine does not return */
                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;
                FUN_002446e0();
              }
              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {
                *(uint *)(puVar10 + -8) = uVar6;
                *(int **)(puVar10 + -0xc) = param_4;
                *(undefined4 *)(puVar10 + -0x10) = param_2;
                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;
                cVar5 = FUN_0034cd20();
                if (cVar5 == '\0') goto LAB_0021c770;
              }
            }
          }
          else if (uVar6 == 0xffff) {
            iVar8 = param_4[0xc];
            if (iVar8 == 0) {
              iVar8 = *param_4;
              *(int **)(puVar10 + -0x10) = param_4;
              pcVar4 = *(code **)(iVar8 + 0x6c);
              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;
              iVar8 = (*pcVar4)();
              param_4[0xc] = iVar8;
            }
            *(uint *)(puVar10 + -8) = uVar9;
            *(int **)(puVar10 + -0xc) = param_4;
            *(int *)(puVar10 + -0x10) = iVar8;
            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;
            uVar6 = FUN_0028b7d0();
            goto LAB_0021caf0;
          }
          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;
          if ((local_48[0xc] & 0xf) == 10) {
            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;
            cVar5 = FUN_0020ec80();
            if (cVar5 != '\0') {
              uVar9 = param_7[1];
              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;
              *(uint *)(puVar10 + -0xc) = local_54;
              *(int **)(puVar10 + -0x10) = param_4;
              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;
              cVar5 = FUN_00290e20();
              if (cVar5 == '\0') {
                iVar8 = *(int *)(param_1 + 0x18);
                if (iVar8 == 0) {
                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;
                  FUN_00210620();
                  iVar8 = *(int *)(param_1 + 0x18);
                }
                local_60 = *(int *)(iVar8 + 0x48) << 5;
                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;
                iVar2 = *(int *)(iVar8 + 0x40);
                iVar3 = *(int *)(iVar2 + 0xc);
                iVar1 = iVar3 + 4;
                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {
                  *(int *)(puVar10 + -4) = iVar8;
                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;
                  *(undefined4 *)(puVar10 + -0xc) = 0x231;
                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;
                    /* WARNING: Subroutine does not return */
                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;
                  FUN_002446e0();
                }
                *(int *)(iVar2 + 0xc) = iVar1;
                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;
                *(undefined4 *)(puVar10 + -0x10) = param_3;
                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;
                local_68 = FUN_00210ef0();
                local_64 = *(undefined4 *)(iVar8 + 0x40);
                *(undefined4 *)(puVar10 + -0xc) = 0;
                *(undefined4 *)(puVar10 + -0x10) = 0;
                *(undefined4 *)(puVar10 + -0x14) = 1;
                *(undefined4 *)(puVar10 + -0x18) = 0;
                *(int *)(puVar10 + -0x1c) = iVar3;
                *(undefined4 *)(puVar10 + -0x20) = local_64;
                *(undefined4 *)(puVar10 + -0x24) = 0x3d;
                *(uint *)(puVar10 + -0x28) = local_54;
                *(int **)(puVar10 + -0x2c) = param_4;
                *(undefined1 ***)(puVar10 + -0x30) = local_38;
                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;
                FUN_002d70b0();
                *(undefined1 ***)(puVar10 + -8) = local_38;
                *(undefined4 *)(puVar10 + -0xc) = local_64;
                *(undefined4 *)(puVar10 + -0x10) = local_68;
                local_20 = 0;
                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;
                FUN_000a9fc0();
                *(int *)(puVar10 + -8) = local_60;
                *(uint *)(puVar10 + -0xc) = local_54;
                *(int **)(puVar10 + -0x10) = param_4;
                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;
                FUN_002b24d0();
              }
            }
          }
          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');
          if (local_40 < 0xfc) {
                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();
            return;
          }
          iVar8 = param_4[1];
          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;
          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;
          uVar7 = gettext();
          *(uint *)(puVar10 + -8) = local_40;
          *(int *)(puVar10 + -0xc) = iVar8;
          *(undefined4 *)(puVar10 + -0x10) = uVar7;
          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;
          FUN_0023b810();
        }
        else {
          if (uVar9 < (uint)param_4[0x2c]) {
LAB_0021dc20:
            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;
            *(undefined4 *)(puVar10 + -0xc) = 0x6a;
            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;
                    /* WARNING: Subroutine does not return */
            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;
            FUN_002446e0();
          }
          uVar9 = uVar9 - param_4[0x2c];
          local_48 = (undefined1 *)param_4[0x30];
          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {
            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;
            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;
            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;
                    /* WARNING: Subroutine does not return */
            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;
            FUN_002446e0();
          }
          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);
          if (iVar8 == 0) goto LAB_0021dc20;
          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {
            *(int *)(puVar10 + -0xc) = iVar8;
            *(undefined4 *)(puVar10 + -0x10) = param_2;
            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;
            iVar8 = FUN_0034cd90();
          }
          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {
            *(undefined4 *)(puVar10 + -4) = 0x21d01b;
            cVar5 = FUN_0020ec80();
            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {
              *(int *)(puVar10 + -0x10) = iVar8;
              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;
              FUN_0021c420();
            }
          }
          if (local_40 < 0xfc) {
                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();
            return;
          }
          *(int *)(puVar10 + -0xc) = iVar8;
          *(undefined1 ***)(puVar10 + -0x10) = local_38;
          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;
          FUN_0034dd40();
          iVar8 = param_4[1];
          local_48 = local_38[0];
          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;
          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;
          uVar7 = gettext();
          *(undefined1 **)(puVar10 + -8) = local_48;
          *(uint *)(puVar10 + -0xc) = local_40;
          *(int *)(puVar10 + -0x10) = iVar8;
          *(undefined4 *)(puVar10 + -0x14) = uVar7;
                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */
          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;
          FUN_0023b810();
          puVar11 = puVar10 + -4;
          if (local_38[0] != local_30) {
            *(undefined1 **)(puVar10 + -0x14) = local_38[0];
            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;
            FUN_003ae080();
            puVar11 = puVar10 + -4;
          }
        }
      }
      else {
        uVar9 = *param_7;
        *(undefined4 *)(puVar10 + -0x10) = 0;
        *(uint *)(puVar10 + -0x14) =
             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
        *(undefined4 *)(puVar10 + -0x18) = param_5;
        *(int **)(puVar10 + -0x1c) = param_4;
        *(undefined4 *)(puVar10 + -0x20) = param_9;
        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;
        cVar5 = FUN_002cd960();
        if (cVar5 != '\0') goto LAB_0021c6ca;
      }
LAB_0021c770:
      local_44 = local_44 + 1;
      param_7 = param_7 + 3;
      puVar10 = puVar11;
    } while (param_8 != local_44);
  }
  return;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x00074f0a
ADD EDI,0x3cd987
PUSH ESI
PUSH EBX
SUB ESP,0x5c
MOVZX EAX,byte ptr [EBP + 0x2c]
CMP dword ptr [EBP + 0x1c],0x9
MOV byte ptr [EBP + -0x49],AL
JZ 0x0021d478
LEA EAX,[EDI + 0x7c8]
MOV byte ptr [EBP + -0x36],0x0
MOV dword ptr [EBP + -0x40],0x0
MOV dword ptr [EBP + -0x54],EAX
MOV dword ptr [EBP + -0x58],EAX
MOV EAX,dword ptr [EBP + 0x24]
TEST EAX,EAX
JZ 0x0021c784
LEA ESI,[ESI]
NOP
CMP byte ptr [EBP + -0x49],0x0
JNZ 0x0021cb40
MOV EAX,dword ptr [EBP + 0x20]
MOV EAX,dword ptr [EAX + 0x4]
BSWAP EAX
MOV EBX,EAX
MOVZX EAX,AL
SHR EBX,0x8
MOV dword ptr [EBP + -0x3c],EAX
CMP dword ptr [EBP + 0x30],EBX
JBE 0x0021cb70
MOV EAX,dword ptr [EBP + 0x34]
TEST EAX,EAX
JZ 0x0021dbff
MOV EAX,EBX
SHL EAX,0x4
ADD EAX,dword ptr [EBP + 0x34]
MOV dword ptr [EBP + -0x44],EAX
MOVZX EAX,word ptr [EAX + 0xe]
ROL AX,0x8
MOVZX EAX,AX
CMP EAX,0xfeff
JBE 0x0021caf0
CMP EAX,0xffff
JZ 0x0021cad0
MOV EAX,dword ptr [EBP + -0x44]
MOVZX EAX,byte ptr [EAX + 0xc]
AND EAX,0xf
MOV byte ptr [EBP + -0x48],AL
CMP AL,0xa
JZ 0x0021c9e8
MOV EAX,dword ptr [EBP + -0x3c]
CMP byte ptr [EBP + -0x48],0xa
SETZ byte ptr [EBP + -0x50]
CMP EAX,0xfb
JA 0x0021c9d0
MOV EAX,dword ptr [EDI + EAX*0x4 + 0xffe99718]
ADD EAX,EDI
JMP EAX
ADD dword ptr [EBP + -0x40],0x1
MOV EAX,dword ptr [EBP + -0x40]
ADD dword ptr [EBP + 0x20],0xc
CMP dword ptr [EBP + 0x24],EAX
JNZ 0x0021c6c0
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH EAX
MOV EBX,EDI
CALL 0x00039440
ADD ESP,0xc
PUSH dword ptr [EBP + -0x3c]
PUSH ESI
PUSH EAX
CALL 0x0023b810
ADD ESP,0x10
JMP 0x0021c770
MOV EAX,dword ptr [EBP + 0x14]
SUB ESP,0xc
MOV ESI,dword ptr [EAX + 0x4]
LEA EAX,[EDI + 0xffe636f0]
JMP 0x0021c9af
MOV EDX,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EBP + 0x14]
CALL 0x0020ec80
TEST AL,AL
JZ 0x0021c732
MOV EAX,dword ptr [EBP + 0x20]
SUB ESP,0x8
MOV EBX,EDI
MOV EAX,dword ptr [EAX + 0x4]
BSWAP EAX
SHR EAX,0x8
PUSH EAX
PUSH dword ptr [EBP + 0x14]
MOV dword ptr [EBP + -0x50],EAX
CALL 0x00290e20
ADD ESP,0x10
TEST AL,AL
JNZ 0x0021c732
MOV EAX,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EAX + 0x18]
TEST EBX,EBX
JZ 0x0021d790
MOV EAX,dword ptr [EBX + 0x48]
MOV ECX,EAX
ADD EAX,0x1
SHL ECX,0x5
MOV dword ptr [EBX + 0x48],EAX
MOV dword ptr [EBP + -0x5c],ECX
MOV ECX,dword ptr [EBX + 0x40]
MOV ESI,dword ptr [ECX + 0xc]
LEA EAX,[ESI + 0x4]
CDQ
TEST byte ptr [ECX + 0x1c],0x2
JNZ 0x0021dd54
SUB ESP,0xc
MOV dword ptr [ECX + 0xc],EAX
LEA EAX,[EBX + 0x30]
MOV dword ptr [ECX + 0x10],EDX
MOV ECX,dword ptr [EBP + 0xc]
LEA EDX,[EBX + 0x34]
PUSH dword ptr [EBP + 0x10]
CALL 0x00210ef0
MOV EDX,dword ptr [EBX + 0x40]
MOV EBX,EDI
MOV dword ptr [EBP + -0x64],EAX
POP EAX
POP ECX
PUSH 0x0
PUSH 0x0
PUSH 0x1
PUSH 0x0
PUSH ESI
LEA ESI,[EBP + -0x34]
PUSH EDX
PUSH 0x3d
PUSH dword ptr [EBP + -0x50]
PUSH dword ptr [EBP + 0x14]
PUSH ESI
MOV dword ptr [EBP + -0x60],EDX
CALL 0x002d70b0
MOV EDX,dword ptr [EBP + -0x60]
MOV EAX,dword ptr [EBP + -0x64]
ADD ESP,0x2c
PUSH ESI
PUSH EDX
PUSH EAX
MOV dword ptr [EBP + -0x1c],0x0
CALL 0x000a9fc0
ADD ESP,0xc
PUSH dword ptr [EBP + -0x5c]
PUSH dword ptr [EBP + -0x50]
PUSH dword ptr [EBP + 0x14]
CALL 0x002b24d0
ADD ESP,0x10
JMP 0x0021c732
MOV EAX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EAX + 0x30]
TEST EAX,EAX
JZ 0x0021d050
SUB ESP,0x4
PUSH EBX
MOV EBX,EDI
PUSH dword ptr [EBP + 0x14]
PUSH EAX
CALL 0x0028b7d0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0021c71d
MOV ECX,dword ptr [EBP + 0x14]
MOV EDX,dword ptr [EBP + 0x14]
MOV ECX,dword ptr [ECX + 0x38]
MOV EDX,dword ptr [EDX + 0x3c]
MOV dword ptr [EBP + -0x48],EDX
SUB EDX,ECX
SAR EDX,0x2
CMP EDX,EAX
JBE 0x0021dc57
MOV ESI,dword ptr [ECX + EAX*0x4]
TEST ESI,ESI
JNZ 0x0021c71d
SUB ESP,0x4
MOV EBX,EDI
PUSH EAX
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EBP + 0xc]
CALL 0x0034cd20
ADD ESP,0x10
TEST AL,AL
JNZ 0x0021c71d
JMP 0x0021c770
MOV EAX,dword ptr [EBP + 0x20]
SUB ESP,0xc
XOR EDX,EDX
MOV EBX,EDI
MOV EAX,dword ptr [EAX]
PUSH EDX
BSWAP EAX
PUSH EAX
PUSH dword ptr [EBP + 0x18]
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EBP + 0x28]
CALL 0x002cd960
ADD ESP,0x20
TEST AL,AL
JNZ 0x0021c6ca
JMP 0x0021c770
MOV EAX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EAX + 0xb0]
CMP EBX,EAX
JC 0x0021dc20
SUB EBX,EAX
MOV EAX,dword ptr [EBP + 0x14]
MOV EDX,dword ptr [EAX + 0xbc]
MOV EAX,dword ptr [EAX + 0xc0]
MOV dword ptr [EBP + -0x44],EAX
SUB EAX,EDX
SAR EAX,0x2
CMP EBX,EAX
JNC 0x0021dc3a
MOV ESI,dword ptr [EDX + EBX*0x4]
TEST ESI,ESI
JZ 0x0021dc20
TEST byte ptr [ESI + 0x2a],0x10
JZ 0x0021cbc6
SUB ESP,0x8
MOV EBX,EDI
PUSH ESI
PUSH dword ptr [EBP + 0xc]
CALL 0x0034cd90
ADD ESP,0x10
MOV ESI,EAX
MOVZX EAX,byte ptr [ESI + 0x28]
AND EAX,0xf
CMP AL,0xa
JZ 0x0021d010
MOV EAX,dword ptr [EBP + -0x3c]
CMP EAX,0xfb
JA 0x0021cfb0
MOV EAX,dword ptr [EDI + EAX*0x4 + 0xffe99b68]
ADD EAX,EDI
JMP EAX
LEA EAX,[EBP + -0x34]
SUB ESP,0x8
MOV EBX,EDI
PUSH ESI
PUSH EAX
CALL 0x0034dd40
MOV EAX,dword ptr [EBP + 0x14]
MOV EDX,dword ptr [EBP + -0x34]
MOV ESI,dword ptr [EAX + 0x4]
LEA EAX,[EDI + 0xffe63720]
MOV dword ptr [EBP + -0x44],EDX
PUSH EAX
CALL 0x00039440
MOV EDX,dword ptr [EBP + -0x44]
ADD ESP,0x10
PUSH EDX
PUSH dword ptr [EBP + -0x3c]
PUSH ESI
PUSH EAX
CALL 0x0023b810
MOV EAX,dword ptr [EBP + -0x34]
LEA EDX,[EBP + -0x2c]
ADD ESP,0x10
CMP EAX,EDX
JZ 0x0021c770
SUB ESP,0xc
PUSH EAX
CALL 0x003ae080
ADD ESP,0x10
JMP 0x0021c770
MOV EDX,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EBP + 0x14]
CALL 0x0020ec80
TEST AL,AL
JZ 0x0021cbd5
CMP dword ptr [ESI + 0x18],-0x1
JNZ 0x0021cbd5
SUB ESP,0xc
MOV ECX,dword ptr [EBP + 0x10]
MOV EDX,dword ptr [EBP + 0xc]
PUSH ESI
MOV EAX,dword ptr [EBP + 0x8]
CALL 0x0021c420
ADD ESP,0x10
JMP 0x0021cbd5
MOV EAX,dword ptr [EBP + 0x14]
SUB ESP,0xc
MOV EAX,dword ptr [EAX]
PUSH dword ptr [EBP + 0x14]
CALL dword ptr [EAX + 0x6c]
MOV ECX,dword ptr [EBP + 0x14]
ADD ESP,0x10
MOV dword ptr [ECX + 0x30],EAX
JMP 0x0021cade
MOV EAX,dword ptr [EBP + 0x14]
SUB ESP,0xc
MOV EBX,EDI
MOV ESI,dword ptr [EAX + 0x4]
LEA EAX,[EDI + 0xffe66470]
PUSH EAX
CALL 0x00039440
POP EDX
POP ECX
PUSH ESI
PUSH EAX
CALL 0x0023b810
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,dword ptr [EBP + 0x10]
MOV EDX,dword ptr [EBP + 0xc]
CALL 0x00210620
MOV EAX,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EAX + 0x18]
JMP 0x0021ca30
SUB ESP,0x4
LEA EAX,[EDI + 0xffe9a4f0]
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffe634d9]
PUSH 0x4d
PUSH EAX
CALL 0x002446e0
SUB ESP,0x4
LEA EAX,[EDI + 0xffe9a4f0]
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffe634d9]
PUSH 0x6a
PUSH EAX
CALL 0x002446e0
SUB ESP,0x4
LEA EAX,[EDI + 0xffe9a620]
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffe63385]
PUSH 0x8ad
PUSH EAX
CALL 0x002446e0
SUB ESP,0x4
LEA EAX,[EDI + 0xffe9aba4]
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffe63385]
PUSH 0x50b
PUSH EAX
CALL 0x002446e0
LEA EAX,[EDI + 0xffe9aea0]
PUSH EBX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffe6335d]
PUSH 0x231
PUSH EAX
CALL 0x002446e0
(translation_unit "void FUN_0021c670(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,\n                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,\n                 uint param_11,int param_12)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  char cVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  int aiStackY_a0 [9];\n  undefined1 auStack_6c [4];\n  undefined4 local_68;\n  undefined4 local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  uint local_54;\n  char local_4d;\n  uint local_4c;\n  undefined1 *local_48;\n  int local_44;\n  uint local_40;\n  undefined1 local_3a;\n  undefined1 *local_38 [2];\n  undefined1 local_30 [16];\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  puVar10 = auStack_6c;\n  local_4d = param_10;\n  if (param_6 == 9) {\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }\n  local_5c = unaff_EDI + 0x3ce14f;\n  local_3a = 0;\n  local_44 = 0;\n  local_58 = local_5c;\n  if (param_8 != 0) {\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }\n  return;\n}\n\n" (function_definition "void FUN_0021c670(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,\n                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,\n                 uint param_11,int param_12)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  char cVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  int aiStackY_a0 [9];\n  undefined1 auStack_6c [4];\n  undefined4 local_68;\n  undefined4 local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  uint local_54;\n  char local_4d;\n  uint local_4c;\n  undefined1 *local_48;\n  int local_44;\n  uint local_40;\n  undefined1 local_3a;\n  undefined1 *local_38 [2];\n  undefined1 local_30 [16];\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  puVar10 = auStack_6c;\n  local_4d = param_10;\n  if (param_6 == 9) {\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }\n  local_5c = unaff_EDI + 0x3ce14f;\n  local_3a = 0;\n  local_44 = 0;\n  local_58 = local_5c;\n  if (param_8 != 0) {\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0021c670(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,\n                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,\n                 uint param_11,int param_12)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,\n                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,\n                 uint param_11,int param_12)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "uint *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "char param_10" primitive_type identifier) , (parameter_declaration "uint param_11" type_identifier identifier) , (parameter_declaration "int param_12" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  char cVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  int aiStackY_a0 [9];\n  undefined1 auStack_6c [4];\n  undefined4 local_68;\n  undefined4 local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  uint local_54;\n  char local_4d;\n  uint local_4c;\n  undefined1 *local_48;\n  int local_44;\n  uint local_40;\n  undefined1 local_3a;\n  undefined1 *local_38 [2];\n  undefined1 local_30 [16];\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  puVar10 = auStack_6c;\n  local_4d = param_10;\n  if (param_6 == 9) {\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }\n  local_5c = unaff_EDI + 0x3ce14f;\n  local_3a = 0;\n  local_44 = 0;\n  local_58 = local_5c;\n  if (param_8 != 0) {\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int aiStackY_a0 [9];" primitive_type (array_declarator "aiStackY_a0 [9]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_6c [4];" type_identifier (array_declarator "auStack_6c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "char local_4d;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "undefined1 local_3a;" type_identifier identifier ;) (declaration "undefined1 *local_38 [2];" type_identifier (pointer_declarator "*local_38 [2]" * (array_declarator "local_38 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_30 [16];" type_identifier (array_declarator "local_30 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = auStack_6c;" (assignment_expression "puVar10 = auStack_6c" identifier = identifier) ;) (expression_statement "local_4d = param_10;" (assignment_expression "local_4d = param_10" identifier = identifier) ;) (if_statement "if (param_6 == 9) {\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }" if (parenthesized_expression "(param_6 == 9)" ( (binary_expression "param_6 == 9" identifier == number_literal) )) (compound_statement "{\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }" { (expression_statement "iVar8 = param_4[1];" (assignment_expression "iVar8 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = gettext(unaff_EDI + 0x233df7);" (assignment_expression "uVar7 = gettext(unaff_EDI + 0x233df7)" identifier = (call_expression "gettext(unaff_EDI + 0x233df7)" identifier (argument_list "(unaff_EDI + 0x233df7)" ( (binary_expression "unaff_EDI + 0x233df7" identifier + number_literal) )))) ;) (expression_statement "FUN_0023b810(uVar7,iVar8);" (call_expression "FUN_0023b810(uVar7,iVar8)" identifier (argument_list "(uVar7,iVar8)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "local_5c = unaff_EDI + 0x3ce14f;" (assignment_expression "local_5c = unaff_EDI + 0x3ce14f" identifier = (binary_expression "unaff_EDI + 0x3ce14f" identifier + number_literal)) ;) (expression_statement "local_3a = 0;" (assignment_expression "local_3a = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_58 = local_5c;" (assignment_expression "local_58 = local_5c" identifier = identifier) ;) (if_statement "if (param_8 != 0) {\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }" if (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }" { (do_statement "do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);" do (compound_statement "{\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    }" { (expression_statement "puVar11 = puVar10;" (assignment_expression "puVar11 = puVar10" identifier = identifier) ;) (if_statement "if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }" if (parenthesized_expression "(local_4d == '\0')" ( (binary_expression "local_4d == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }" { (labeled_statement "LAB_0021c6ca:\n        uVar9 = param_7[1];" statement_identifier : (expression_statement "uVar9 = param_7[1];" (assignment_expression "uVar9 = param_7[1]" identifier = (subscript_expression "param_7[1]" identifier [ number_literal ])) ;)) (expression_statement "local_40 = uVar9 >> 0x18;" (assignment_expression "local_40 = uVar9 >> 0x18" identifier = (binary_expression "uVar9 >> 0x18" identifier >> number_literal)) ;) (expression_statement "uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;" (assignment_expression "uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" identifier = (binary_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" (parenthesized_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18)" ( (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal)) )) >> number_literal)) ;) (if_statement "if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }" if (parenthesized_expression "(uVar9 < param_11)" ( (binary_expression "uVar9 < param_11" identifier < identifier) )) (compound_statement "{\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }" { (if_statement "if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }" if (parenthesized_expression "(param_12 == 0)" ( (binary_expression "param_12 == 0" identifier == number_literal) )) (compound_statement "{\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }" { (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x267e77" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x4d;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x4d" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x230e60" identifier + number_literal)) ;) comment (expression_statement "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;" (assignment_expression "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc19" (pointer_expression "*(undefined **)(puVar10 + -0x14)" * (cast_expression "(undefined **)(puVar10 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (pointer_expression "&UNK_0021dc19" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);" (assignment_expression "local_48 = (undefined1 *)(uVar9 * 0x10 + param_12)" identifier = (cast_expression "(undefined1 *)(uVar9 * 0x10 + param_12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 * 0x10 + param_12)" ( (binary_expression "uVar9 * 0x10 + param_12" (binary_expression "uVar9 * 0x10" identifier * number_literal) + identifier) )))) ;) (expression_statement "uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );" (assignment_expression "uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                )" identifier = (call_expression "(uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                )" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ushort)" ( identifier ))) (argument_list "(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                )" ( (binary_expression "*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8" (binary_expression "*(ushort *)(local_48 + 0xe) << 8" (pointer_expression "*(ushort *)(local_48 + 0xe)" * (cast_expression "(ushort *)(local_48 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 0xe)" ( (binary_expression "local_48 + 0xe" identifier + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)(local_48 + 0xe) >> 8" (pointer_expression "*(ushort *)(local_48 + 0xe)" * (cast_expression "(ushort *)(local_48 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 0xe)" ( (binary_expression "local_48 + 0xe" identifier + number_literal) )))) >> number_literal)) )))) ;) (if_statement "if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" if (parenthesized_expression "(uVar6 < 0xff00)" ( (binary_expression "uVar6 < 0xff00" identifier < number_literal) )) (compound_statement "{\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }" { (labeled_statement "LAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }" statement_identifier : (if_statement "if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }" { (expression_statement "local_4c = param_4[0xf];" (assignment_expression "local_4c = param_4[0xf]" identifier = (subscript_expression "param_4[0xf]" identifier [ number_literal ])) ;) (if_statement "if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }" if (parenthesized_expression "((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6)" ( (binary_expression "(uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6" (call_expression "(uint)((int)(local_4c - param_4[0xe]) >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(local_4c - param_4[0xe]) >> 2)" ( (binary_expression "(int)(local_4c - param_4[0xe]) >> 2" (cast_expression "(int)(local_4c - param_4[0xe])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_4c - param_4[0xe])" ( (binary_expression "local_4c - param_4[0xe]" identifier - (subscript_expression "param_4[0xe]" identifier [ number_literal ])) ))) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }" { (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x26852b" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x26852b" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x50b;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x50b" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x230d0c" identifier + number_literal)) ;) comment (expression_statement "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;" (assignment_expression "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc74" (pointer_expression "*(undefined **)(puVar10 + -0x14)" * (cast_expression "(undefined **)(puVar10 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (pointer_expression "&UNK_0021dc74" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }" if (parenthesized_expression "(*(int *)(param_4[0xe] + uVar6 * 4) == 0)" ( (binary_expression "*(int *)(param_4[0xe] + uVar6 * 4) == 0" (pointer_expression "*(int *)(param_4[0xe] + uVar6 * 4)" * (cast_expression "(int *)(param_4[0xe] + uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[0xe] + uVar6 * 4)" ( (binary_expression "param_4[0xe] + uVar6 * 4" (subscript_expression "param_4[0xe]" identifier [ number_literal ]) + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }" { (expression_statement "*(uint *)(puVar10 + -8) = uVar6;" (assignment_expression "*(uint *)(puVar10 + -8) = uVar6" (pointer_expression "*(uint *)(puVar10 + -8)" * (cast_expression "(uint *)(puVar10 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0xc) = param_4;" (assignment_expression "*(int **)(puVar10 + -0xc) = param_4" (pointer_expression "*(int **)(puVar10 + -0xc)" * (cast_expression "(int **)(puVar10 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = param_2;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = param_2" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cb30;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cb30" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_0034cd20();" (assignment_expression "cVar5 = FUN_0034cd20()" identifier = (call_expression "FUN_0034cd20()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 == '\0') goto LAB_0021c770;" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0021c770;" goto statement_identifier ;)) })) }))) }) (else_clause "else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" else (if_statement "if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" if (parenthesized_expression "(uVar6 == 0xffff)" ( (binary_expression "uVar6 == 0xffff" identifier == number_literal) )) (compound_statement "{\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" { (expression_statement "iVar8 = param_4[0xc];" (assignment_expression "iVar8 = param_4[0xc]" identifier = (subscript_expression "param_4[0xc]" identifier [ number_literal ])) ;) (if_statement "if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }" { (expression_statement "iVar8 = *param_4;" (assignment_expression "iVar8 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "*(int **)(puVar10 + -0x10) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_4" (pointer_expression "*(int **)(puVar10 + -0x10)" * (cast_expression "(int **)(puVar10 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar4 = *(code **)(iVar8 + 0x6c);" (assignment_expression "pcVar4 = *(code **)(iVar8 + 0x6c)" identifier = (pointer_expression "*(code **)(iVar8 + 0x6c)" * (cast_expression "(code **)(iVar8 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x6c)" ( (binary_expression "iVar8 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21d05e;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21d05e" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = (*pcVar4)();" (assignment_expression "iVar8 = (*pcVar4)()" identifier = (call_expression "(*pcVar4)()" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "param_4[0xc] = iVar8;" (assignment_expression "param_4[0xc] = iVar8" (subscript_expression "param_4[0xc]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "*(uint *)(puVar10 + -8) = uVar9;" (assignment_expression "*(uint *)(puVar10 + -8) = uVar9" (pointer_expression "*(uint *)(puVar10 + -8)" * (cast_expression "(uint *)(puVar10 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0xc) = param_4;" (assignment_expression "*(int **)(puVar10 + -0xc) = param_4" (pointer_expression "*(int **)(puVar10 + -0xc)" * (cast_expression "(int **)(puVar10 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0x10) = iVar8" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21caed;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21caed" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = FUN_0028b7d0();" (assignment_expression "uVar6 = FUN_0028b7d0()" identifier = (call_expression "FUN_0028b7d0()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_0021caf0;" goto statement_identifier ;) })))) (expression_statement "local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;" (assignment_expression "local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f" identifier = (binary_expression "CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f" (call_expression "CONCAT31(local_4c._1_3_,local_48[0xc])" identifier (argument_list "(local_4c._1_3_,local_48[0xc])" ( (field_expression "local_4c._1_3_" identifier . field_identifier) , (subscript_expression "local_48[0xc]" identifier [ number_literal ]) ))) & number_literal)) ;) (if_statement "if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }" if (parenthesized_expression "((local_48[0xc] & 0xf) == 10)" ( (binary_expression "(local_48[0xc] & 0xf) == 10" (parenthesized_expression "(local_48[0xc] & 0xf)" ( (binary_expression "local_48[0xc] & 0xf" (subscript_expression "local_48[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }" { (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x21c9f3;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x21c9f3" (pointer_expression "*(undefined4 *)(puVar10 + -4)" * (cast_expression "(undefined4 *)(puVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_0020ec80();" (assignment_expression "cVar5 = FUN_0020ec80()" identifier = (call_expression "FUN_0020ec80()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }" { (expression_statement "uVar9 = param_7[1];" (assignment_expression "uVar9 = param_7[1]" identifier = (subscript_expression "param_7[1]" identifier [ number_literal ])) ;) (expression_statement "local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;" (assignment_expression "local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" identifier = (binary_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" (parenthesized_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18)" ( (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal)) )) >> number_literal)) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = local_54;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_54" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x10) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_4" (pointer_expression "*(int **)(puVar10 + -0x10)" * (cast_expression "(int **)(puVar10 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21ca17;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21ca17" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_00290e20();" (assignment_expression "cVar5 = FUN_00290e20()" identifier = (call_expression "FUN_00290e20()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }" { (expression_statement "iVar8 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x18)" identifier = (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }" { (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x21d79b;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x21d79b" (pointer_expression "*(undefined4 *)(puVar10 + -4)" * (cast_expression "(undefined4 *)(puVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00210620();" (call_expression "FUN_00210620()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x18)" identifier = (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) })) (expression_statement "local_60 = *(int *)(iVar8 + 0x48) << 5;" (assignment_expression "local_60 = *(int *)(iVar8 + 0x48) << 5" identifier = (binary_expression "*(int *)(iVar8 + 0x48) << 5" (pointer_expression "*(int *)(iVar8 + 0x48)" * (cast_expression "(int *)(iVar8 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x48)" ( (binary_expression "iVar8 + 0x48" identifier + number_literal) )))) << number_literal)) ;) (expression_statement "*(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;" (assignment_expression "*(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1" (pointer_expression "*(int *)(iVar8 + 0x48)" * (cast_expression "(int *)(iVar8 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x48)" ( (binary_expression "iVar8 + 0x48" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar8 + 0x48) + 1" (pointer_expression "*(int *)(iVar8 + 0x48)" * (cast_expression "(int *)(iVar8 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x48)" ( (binary_expression "iVar8 + 0x48" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "iVar2 = *(int *)(iVar8 + 0x40);" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x40)" identifier = (pointer_expression "*(int *)(iVar8 + 0x40)" * (cast_expression "(int *)(iVar8 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x40)" ( (binary_expression "iVar8 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(iVar2 + 0xc);" (assignment_expression "iVar3 = *(int *)(iVar2 + 0xc)" identifier = (pointer_expression "*(int *)(iVar2 + 0xc)" * (cast_expression "(int *)(iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = iVar3 + 4;" (assignment_expression "iVar1 = iVar3 + 4" identifier = (binary_expression "iVar3 + 4" identifier + number_literal)) ;) (if_statement "if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x1c) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x1c) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x1c) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar2 + 0x1c)" * (cast_expression "(byte *)(iVar2 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    /* WARNING: Subroutine does not return */\n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }" { (expression_statement "*(int *)(puVar10 + -4) = iVar8;" (assignment_expression "*(int *)(puVar10 + -4) = iVar8" (pointer_expression "*(int *)(puVar10 + -4)" * (cast_expression "(int *)(puVar10 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x268827;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x268827" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x268827" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x231;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x231" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x230ce4" identifier + number_literal)) ;) comment (expression_statement "*(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;" (assignment_expression "*(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f" (pointer_expression "*(undefined **)(puVar10 + -0x14)" * (cast_expression "(undefined **)(puVar10 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (pointer_expression "&UNK_0021dd6f" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int *)(iVar2 + 0xc) = iVar1;" (assignment_expression "*(int *)(iVar2 + 0xc) = iVar1" (pointer_expression "*(int *)(iVar2 + 0xc)" * (cast_expression "(int *)(iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;" (assignment_expression "*(int *)(iVar2 + 0x10) = iVar1 >> 0x1f" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar1 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = param_3;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = param_3" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21ca6f" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_68 = FUN_00210ef0();" (assignment_expression "local_68 = FUN_00210ef0()" identifier = (call_expression "FUN_00210ef0()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_64 = *(undefined4 *)(iVar8 + 0x40);" (assignment_expression "local_64 = *(undefined4 *)(iVar8 + 0x40)" identifier = (pointer_expression "*(undefined4 *)(iVar8 + 0x40)" * (cast_expression "(undefined4 *)(iVar8 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x40)" ( (binary_expression "iVar8 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 1;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 1" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x1c) = iVar3;" (assignment_expression "*(int *)(puVar10 + -0x1c) = iVar3" (pointer_expression "*(int *)(puVar10 + -0x1c)" * (cast_expression "(int *)(puVar10 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x1c)" ( (binary_expression "puVar10 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x20) = local_64;" (assignment_expression "*(undefined4 *)(puVar10 + -0x20) = local_64" (pointer_expression "*(undefined4 *)(puVar10 + -0x20)" * (cast_expression "(undefined4 *)(puVar10 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x20)" ( (binary_expression "puVar10 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x24) = 0x3d;" (assignment_expression "*(undefined4 *)(puVar10 + -0x24) = 0x3d" (pointer_expression "*(undefined4 *)(puVar10 + -0x24)" * (cast_expression "(undefined4 *)(puVar10 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x24)" ( (binary_expression "puVar10 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar10 + -0x28) = local_54;" (assignment_expression "*(uint *)(puVar10 + -0x28) = local_54" (pointer_expression "*(uint *)(puVar10 + -0x28)" * (cast_expression "(uint *)(puVar10 + -0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x28)" ( (binary_expression "puVar10 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x2c) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x2c) = param_4" (pointer_expression "*(int **)(puVar10 + -0x2c)" * (cast_expression "(int **)(puVar10 + -0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x2c)" ( (binary_expression "puVar10 + -0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)(puVar10 + -0x30) = local_38;" (assignment_expression "*(undefined1 ***)(puVar10 + -0x30) = local_38" (pointer_expression "*(undefined1 ***)(puVar10 + -0x30)" * (cast_expression "(undefined1 ***)(puVar10 + -0x30)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar10 + -0x30)" ( (binary_expression "puVar10 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x34) = 0x21ca97;" (assignment_expression "*(undefined4 *)(puVar10 + -0x34) = 0x21ca97" (pointer_expression "*(undefined4 *)(puVar10 + -0x34)" * (cast_expression "(undefined4 *)(puVar10 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x34)" ( (binary_expression "puVar10 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002d70b0();" (call_expression "FUN_002d70b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined1 ***)(puVar10 + -8) = local_38;" (assignment_expression "*(undefined1 ***)(puVar10 + -8) = local_38" (pointer_expression "*(undefined1 ***)(puVar10 + -8)" * (cast_expression "(undefined1 ***)(puVar10 + -8)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = local_64;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = local_64" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = local_68;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = local_68" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21caaf;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21caaf" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000a9fc0();" (call_expression "FUN_000a9fc0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar10 + -8) = local_60;" (assignment_expression "*(int *)(puVar10 + -8) = local_60" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = local_54;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_54" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x10) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_4" (pointer_expression "*(int **)(puVar10 + -0x10)" * (cast_expression "(int **)(puVar10 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cac0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cac0" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002b24d0();" (call_expression "FUN_002b24d0()" identifier (argument_list "()" ( ))) ;) })) })) })) (expression_statement "local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');" (assignment_expression "local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n')" identifier = (call_expression "CONCAT31(local_54._1_3_,(char)local_4c == '\n')" identifier (argument_list "(local_54._1_3_,(char)local_4c == '\n')" ( (field_expression "local_54._1_3_" identifier . field_identifier) , (binary_expression "(char)local_4c == '\n'" (cast_expression "(char)local_4c" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\n'" ' escape_sequence ')) )))) ;) (if_statement "if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" if (parenthesized_expression "(local_40 < 0xfc)" ( (binary_expression "local_40 < 0xfc" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" { comment comment (expression_statement "(*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();" (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987)" ( (binary_expression "*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987" (binary_expression "*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x26709f + local_40 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x26709f + local_40 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x26709f + local_40 * 4)" ( (binary_expression "unaff_EDI + 0x26709f + local_40 * 4" (binary_expression "unaff_EDI + 0x26709f" identifier + number_literal) + (binary_expression "local_40 * 4" identifier * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar8 = param_4[1];" (assignment_expression "iVar8 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x231077" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21c9b7" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = gettext();" (assignment_expression "uVar7 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(uint *)(puVar10 + -8) = local_40;" (assignment_expression "*(uint *)(puVar10 + -8) = local_40" (pointer_expression "*(uint *)(puVar10 + -8)" * (cast_expression "(uint *)(puVar10 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0xc) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar8" (pointer_expression "*(int *)(puVar10 + -0xc)" * (cast_expression "(int *)(puVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = uVar7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = uVar7" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21c9c4" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0023b810();" (call_expression "FUN_0023b810()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }" else (compound_statement "{\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }" { (if_statement "if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }" if (parenthesized_expression "(uVar9 < (uint)param_4[0x2c])" ( (binary_expression "uVar9 < (uint)param_4[0x2c]" identifier < (cast_expression "(uint)param_4[0x2c]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0x2c]" identifier [ number_literal ]))) )) (compound_statement "{\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }" { (labeled_statement "LAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;" statement_identifier : (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x267e77" identifier + number_literal)) ;)) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x6a;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x6a" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x230e60" identifier + number_literal)) ;) comment (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21dc3a" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar9 = uVar9 - param_4[0x2c];" (assignment_expression "uVar9 = uVar9 - param_4[0x2c]" identifier = (binary_expression "uVar9 - param_4[0x2c]" identifier - (subscript_expression "param_4[0x2c]" identifier [ number_literal ]))) ;) (expression_statement "local_48 = (undefined1 *)param_4[0x30];" (assignment_expression "local_48 = (undefined1 *)param_4[0x30]" identifier = (cast_expression "(undefined1 *)param_4[0x30]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[0x30]" identifier [ number_literal ]))) ;) (if_statement "if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }" if (parenthesized_expression "((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9)" ( (binary_expression "(uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9" (call_expression "(uint)((int)local_48 - param_4[0x2f] >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)local_48 - param_4[0x2f] >> 2)" ( (binary_expression "(int)local_48 - param_4[0x2f] >> 2" (binary_expression "(int)local_48 - param_4[0x2f]" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) - (subscript_expression "param_4[0x2f]" identifier [ number_literal ])) >> number_literal) ))) <= identifier) )) (compound_statement "{\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    /* WARNING: Subroutine does not return */\n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }" { (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x267fa7" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x8ad;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x8ad" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x230d0c" identifier + number_literal)) ;) comment (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21dc57;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21dc57" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);" (assignment_expression "iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4)" identifier = (pointer_expression "*(int *)(param_4[0x2f] + uVar9 * 4)" * (cast_expression "(int *)(param_4[0x2f] + uVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[0x2f] + uVar9 * 4)" ( (binary_expression "param_4[0x2f] + uVar9 * 4" (subscript_expression "param_4[0x2f]" identifier [ number_literal ]) + (binary_expression "uVar9 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar8 == 0) goto LAB_0021dc20;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0021dc20;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }" if (parenthesized_expression "((*(byte *)(iVar8 + 0x2a) & 0x10) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x2a) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2a) & 0x10)" ( (binary_expression "*(byte *)(iVar8 + 0x2a) & 0x10" (pointer_expression "*(byte *)(iVar8 + 0x2a)" * (cast_expression "(byte *)(iVar8 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2a)" ( (binary_expression "iVar8 + 0x2a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }" { (expression_statement "*(int *)(puVar10 + -0xc) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar8" (pointer_expression "*(int *)(puVar10 + -0xc)" * (cast_expression "(int *)(puVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = param_2;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = param_2" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cbc1" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = FUN_0034cd90();" (assignment_expression "iVar8 = FUN_0034cd90()" identifier = (call_expression "FUN_0034cd90()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }" if (parenthesized_expression "((*(byte *)(iVar8 + 0x28) & 0xf) == 10)" ( (binary_expression "(*(byte *)(iVar8 + 0x28) & 0xf) == 10" (parenthesized_expression "(*(byte *)(iVar8 + 0x28) & 0xf)" ( (binary_expression "*(byte *)(iVar8 + 0x28) & 0xf" (pointer_expression "*(byte *)(iVar8 + 0x28)" * (cast_expression "(byte *)(iVar8 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }" { (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x21d01b;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x21d01b" (pointer_expression "*(undefined4 *)(puVar10 + -4)" * (cast_expression "(undefined4 *)(puVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_0020ec80();" (assignment_expression "cVar5 = FUN_0020ec80()" identifier = (call_expression "FUN_0020ec80()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }" if (parenthesized_expression "((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1))" ( (binary_expression "(cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)" (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)(iVar8 + 0x18) == -1)" ( (binary_expression "*(int *)(iVar8 + 0x18) == -1" (pointer_expression "*(int *)(iVar8 + 0x18)" * (cast_expression "(int *)(iVar8 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }" { (expression_statement "*(int *)(puVar10 + -0x10) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0x10) = iVar8" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21d03f;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21d03f" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0021c420();" (call_expression "FUN_0021c420()" identifier (argument_list "()" ( ))) ;) })) })) (if_statement "if (local_40 < 0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" if (parenthesized_expression "(local_40 < 0xfc)" ( (binary_expression "local_40 < 0xfc" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" { comment comment (expression_statement "(*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();" (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987)" ( (binary_expression "*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987" (binary_expression "*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x2674ef + local_40 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x2674ef + local_40 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x2674ef + local_40 * 4)" ( (binary_expression "unaff_EDI + 0x2674ef + local_40 * 4" (binary_expression "unaff_EDI + 0x2674ef" identifier + number_literal) + (binary_expression "local_40 * 4" identifier * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "*(int *)(puVar10 + -0xc) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar8" (pointer_expression "*(int *)(puVar10 + -0xc)" * (cast_expression "(int *)(puVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)(puVar10 + -0x10) = local_38;" (assignment_expression "*(undefined1 ***)(puVar10 + -0x10) = local_38" (pointer_expression "*(undefined1 ***)(puVar10 + -0x10)" * (cast_expression "(undefined1 ***)(puVar10 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cfbf" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0034dd40();" (call_expression "FUN_0034dd40()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = param_4[1];" (assignment_expression "iVar8 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "local_48 = local_38[0];" (assignment_expression "local_48 = local_38[0]" identifier = (subscript_expression "local_38[0]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;" (assignment_expression "*(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7" (pointer_expression "*(int *)(puVar10 + -0x14)" * (cast_expression "(int *)(puVar10 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x2310a7" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x21cfd7" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = gettext();" (assignment_expression "uVar7 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 **)(puVar10 + -8) = local_48;" (assignment_expression "*(undefined1 **)(puVar10 + -8) = local_48" (pointer_expression "*(undefined1 **)(puVar10 + -8)" * (cast_expression "(undefined1 **)(puVar10 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = local_40;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_40" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0x10) = iVar8" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = uVar7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = uVar7" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x21cfe8" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0023b810();" (call_expression "FUN_0023b810()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) (if_statement "if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }" if (parenthesized_expression "(local_38[0] != local_30)" ( (binary_expression "local_38[0] != local_30" (subscript_expression "local_38[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }" { (expression_statement "*(undefined1 **)(puVar10 + -0x14) = local_38[0];" (assignment_expression "*(undefined1 **)(puVar10 + -0x14) = local_38[0]" (pointer_expression "*(undefined1 **)(puVar10 + -0x14)" * (cast_expression "(undefined1 **)(puVar10 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (subscript_expression "local_38[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x21d002;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x21d002" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) })) }))) }) (else_clause "else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }" else (compound_statement "{\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }" { (expression_statement "uVar9 = *param_7;" (assignment_expression "uVar9 = *param_7" identifier = (pointer_expression "*param_7" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "*(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (pointer_expression "*(uint *)(puVar10 + -0x14)" * (cast_expression "(uint *)(puVar10 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = param_5;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = param_5" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x1c) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x1c) = param_4" (pointer_expression "*(int **)(puVar10 + -0x1c)" * (cast_expression "(int **)(puVar10 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x1c)" ( (binary_expression "puVar10 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x20) = param_9;" (assignment_expression "*(undefined4 *)(puVar10 + -0x20) = param_9" (pointer_expression "*(undefined4 *)(puVar10 + -0x20)" * (cast_expression "(undefined4 *)(puVar10 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x20)" ( (binary_expression "puVar10 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;" (assignment_expression "*(undefined4 *)(puVar10 + -0x24) = 0x21cb5e" (pointer_expression "*(undefined4 *)(puVar10 + -0x24)" * (cast_expression "(undefined4 *)(puVar10 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x24)" ( (binary_expression "puVar10 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_002cd960();" (assignment_expression "cVar5 = FUN_002cd960()" identifier = (call_expression "FUN_002cd960()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 != '\0') goto LAB_0021c6ca;" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0021c6ca;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0021c770:\n      local_44 = local_44 + 1;" statement_identifier : (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" identifier = (binary_expression "local_44 + 1" identifier + number_literal)) ;)) (expression_statement "param_7 = param_7 + 3;" (assignment_expression "param_7 = param_7 + 3" identifier = (binary_expression "param_7 + 3" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" identifier = identifier) ;) }) while (parenthesized_expression "(param_8 != local_44)" ( (binary_expression "param_8 != local_44" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void scan_relocs(Target_s390<32> * this, Symbol_table * symtab, Layout\n   * layout, Sized_relobj_file<32,_true> * object, uint data_shndx, uint sh_type, uchar * prelocs,\n   size_t reloc_count, Output_section * output_section, bool needs_special_offset_handling, size_t\n   local_symbol_count, uchar * plocal_symbols) */\n\nvoid __thiscall\nanon_unknown.dwarf_130c1fc::Target_s390<32>::scan_relocs\n          (Target_s390<32> *this,Symbol_table *symtab,Layout *layout,\n          Sized_relobj_file<32,_true> *object,uint data_shndx,uint sh_type,uchar *prelocs,\n          size_t reloc_count,Output_section *output_section,bool needs_special_offset_handling,\n          size_t param_10,uchar *plocal_symbols)\n\n{\n  int iVar1;\n  Output_data_space *pOVar2;\n  Address address;\n  pointer ppOVar3;\n  pointer ppSVar4;\n  pointer pcVar5;\n  anon_union_4_4_c82d8563_for_u1_ aVar6;\n  bool bVar7;\n  char *pcVar8;\n  Symbol_table *symndx;\n  Symbol_table *pSVar9;\n  Xindex *this_00;\n  Layout *symndx_00;\n  Output_data_plt_s390<32> *pOVar10;\n  uint uVar11;\n  int unaff_EDI;\n  Symbol_table *in_stack_ffffff88;\n  Layout *in_stack_ffffff8c;\n  Layout *layout_00;\n  Layout *pLVar12;\n  Output_data_plt_s390<32> *this_1;\n  Symbol *gsym;\n  Target_s390<32> *in_stack_ffffff94;\n  Symbol_table *in_stack_ffffff98;\n  Layout *in_stack_ffffff9c;\n  size_t local_44;\n  Scan scan;\n  bool is_ordinary_1;\n  bool is_ordinary;\n  undefined4 local_20;\n  \n  __x86_get_pc_thunk_di();\n  if (sh_type == 9) {\n    pcVar5 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus._M_p\n    ;\n    pcVar8 = (char *)gettext(unaff_EDI + 0x233df7);\n    gold::gold_error(pcVar8,pcVar5);\n    return;\n  }\n  local_44 = 0;\n  if (reloc_count != 0) {\n    do {\n      layout_00 = in_stack_ffffff8c;\n      if (needs_special_offset_handling) {\n        uVar11 = *(uint *)prelocs;\n        bVar7 = gold::Output_section::is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18));\n        layout_00 = in_stack_ffffff8c;\n        if (bVar7) goto LAB_0021c6ca;\n      }\n      else {\nLAB_0021c6ca:\n        uVar11 = *(uint *)(prelocs + 4);\n        pLVar12 = (Layout *)(uVar11 >> 0x18);\n        symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n        if (symndx_00 < param_10) {\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }\n        else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }\n      }\n_L5076:\n      local_44 = local_44 + 1;\n      prelocs = prelocs + 0xc;\n    } while (reloc_count != local_44);\n  }\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall\nanon_unknown.dwarf_130c1fc::Target_s390<32>::scan_relocs\n          (Target_s390<32> *this,Symbol_table *symtab,Layout *layout,\n          Sized_relobj_file<32,_true> *object,uint data_shndx,uint sh_type,uchar *prelocs,\n          size_t reloc_count,Output_section *output_section,bool needs_special_offset_handling,\n          size_t param_10,uchar *plocal_symbols)\n\n{\n  int iVar1;\n  Output_data_space *pOVar2;\n  Address address;\n  pointer ppOVar3;\n  pointer ppSVar4;\n  pointer pcVar5;\n  anon_union_4_4_c82d8563_for_u1_ aVar6;\n  bool bVar7;\n  char *pcVar8;\n  Symbol_table *symndx;\n  Symbol_table *pSVar9;\n  Xindex *this_00;\n  Layout *symndx_00;\n  Output_data_plt_s390<32> *pOVar10;\n  uint uVar11;\n  int unaff_EDI;\n  Symbol_table *in_stack_ffffff88;\n  Layout *in_stack_ffffff8c;\n  Layout *layout_00;\n  Layout *pLVar12;\n  Output_data_plt_s390<32> *this_1;\n  Symbol *gsym;\n  Target_s390<32> *in_stack_ffffff94;\n  Symbol_table *in_stack_ffffff98;\n  Layout *in_stack_ffffff9c;\n  size_t local_44;\n  Scan scan;\n  bool is_ordinary_1;\n  bool is_ordinary;\n  undefined4 local_20;\n  \n  __x86_get_pc_thunk_di();\n  if (sh_type == 9) {\n    pcVar5 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus._M_p\n    ;\n    pcVar8 = (char *)gettext(unaff_EDI + 0x233df7);\n    gold::gold_error(pcVar8,pcVar5);\n    return;\n  }\n  local_44 = 0;\n  if (reloc_count != 0) {\n    do {\n      layout_00 = in_stack_ffffff8c;\n      if (needs_special_offset_handling) {\n        uVar11 = *(uint *)prelocs;\n        bVar7 = gold::Output_section::is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18));\n        layout_00 = in_stack_ffffff8c;\n        if (bVar7) goto LAB_0021c6ca;\n      }\n      else {\nLAB_0021c6ca:\n        uVar11 = *(uint *)(prelocs + 4);\n        pLVar12 = (Layout *)(uVar11 >> 0x18);\n        symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n        if (symndx_00 < param_10) {\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }\n        else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }\n      }\n_L5076:\n      local_44 = local_44 + 1;\n      prelocs = prelocs + 0xc;\n    } while (reloc_count != local_44);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_130c1fc::Target_s390<32>::" identifier . identifier : : identifier < number_literal > : :) (function_declarator "scan_relocs\n          (Target_s390<32> *this,Symbol_table *symtab,Layout *layout,\n          Sized_relobj_file<32,_true> *object,uint data_shndx,uint sh_type,uchar *prelocs,\n          size_t reloc_count,Output_section *output_section,bool needs_special_offset_handling,\n          size_t param_10,uchar *plocal_symbols)" identifier (parameter_list "(Target_s390<32> *this,Symbol_table *symtab,Layout *layout,\n          Sized_relobj_file<32,_true> *object,uint data_shndx,uint sh_type,uchar *prelocs,\n          size_t reloc_count,Output_section *output_section,bool needs_special_offset_handling,\n          size_t param_10,uchar *plocal_symbols)" ( (parameter_declaration "Target_s390<32> *this" type_identifier (ERROR "<32>" < number_literal >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *object" type_identifier (ERROR ">" >) (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint data_shndx" type_identifier identifier) , (parameter_declaration "uint sh_type" type_identifier identifier) , (parameter_declaration "uchar *prelocs" type_identifier (pointer_declarator "*prelocs" * identifier)) , (parameter_declaration "size_t reloc_count" primitive_type identifier) , (parameter_declaration "Output_section *output_section" type_identifier (pointer_declarator "*output_section" * identifier)) , (parameter_declaration "bool needs_special_offset_handling" primitive_type identifier) , (parameter_declaration "size_t param_10" primitive_type identifier) , (parameter_declaration "uchar *plocal_symbols" type_identifier (pointer_declarator "*plocal_symbols" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  Output_data_space *pOVar2;\n  Address address;\n  pointer ppOVar3;\n  pointer ppSVar4;\n  pointer pcVar5;\n  anon_union_4_4_c82d8563_for_u1_ aVar6;\n  bool bVar7;\n  char *pcVar8;\n  Symbol_table *symndx;\n  Symbol_table *pSVar9;\n  Xindex *this_00;\n  Layout *symndx_00;\n  Output_data_plt_s390<32> *pOVar10;\n  uint uVar11;\n  int unaff_EDI;\n  Symbol_table *in_stack_ffffff88;\n  Layout *in_stack_ffffff8c;\n  Layout *layout_00;\n  Layout *pLVar12;\n  Output_data_plt_s390<32> *this_1;\n  Symbol *gsym;\n  Target_s390<32> *in_stack_ffffff94;\n  Symbol_table *in_stack_ffffff98;\n  Layout *in_stack_ffffff9c;\n  size_t local_44;\n  Scan scan;\n  bool is_ordinary_1;\n  bool is_ordinary;\n  undefined4 local_20;\n  \n  __x86_get_pc_thunk_di();\n  if (sh_type == 9) {\n    pcVar5 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus._M_p\n    ;\n    pcVar8 = (char *)gettext(unaff_EDI + 0x233df7);\n    gold::gold_error(pcVar8,pcVar5);\n    return;\n  }\n  local_44 = 0;\n  if (reloc_count != 0) {\n    do {\n      layout_00 = in_stack_ffffff8c;\n      if (needs_special_offset_handling) {\n        uVar11 = *(uint *)prelocs;\n        bVar7 = gold::Output_section::is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18));\n        layout_00 = in_stack_ffffff8c;\n        if (bVar7) goto LAB_0021c6ca;\n      }\n      else {\nLAB_0021c6ca:\n        uVar11 = *(uint *)(prelocs + 4);\n        pLVar12 = (Layout *)(uVar11 >> 0x18);\n        symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n        if (symndx_00 < param_10) {\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }\n        else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }\n      }\n_L5076:\n      local_44 = local_44 + 1;\n      prelocs = prelocs + 0xc;\n    } while (reloc_count != local_44);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "Output_data_space *pOVar2;" type_identifier (pointer_declarator "*pOVar2" * identifier) ;) (declaration "Address address;" type_identifier identifier ;) (declaration "pointer ppOVar3;" type_identifier identifier ;) (declaration "pointer ppSVar4;" type_identifier identifier ;) (declaration "pointer pcVar5;" type_identifier identifier ;) (declaration "anon_union_4_4_c82d8563_for_u1_ aVar6;" type_identifier identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "Symbol_table *symndx;" type_identifier (pointer_declarator "*symndx" * identifier) ;) (declaration "Symbol_table *pSVar9;" type_identifier (pointer_declarator "*pSVar9" * identifier) ;) (declaration "Xindex *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "Layout *symndx_00;" type_identifier (pointer_declarator "*symndx_00" * identifier) ;) (expression_statement "Output_data_plt_s390<32> *pOVar10;" (binary_expression "Output_data_plt_s390<32> *pOVar10" (binary_expression "Output_data_plt_s390<32" identifier < number_literal) > (pointer_expression "*pOVar10" * identifier)) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "Symbol_table *in_stack_ffffff88;" type_identifier (pointer_declarator "*in_stack_ffffff88" * identifier) ;) (declaration "Layout *in_stack_ffffff8c;" type_identifier (pointer_declarator "*in_stack_ffffff8c" * identifier) ;) (declaration "Layout *layout_00;" type_identifier (pointer_declarator "*layout_00" * identifier) ;) (declaration "Layout *pLVar12;" type_identifier (pointer_declarator "*pLVar12" * identifier) ;) (expression_statement "Output_data_plt_s390<32> *this_1;" (binary_expression "Output_data_plt_s390<32> *this_1" (binary_expression "Output_data_plt_s390<32" identifier < number_literal) > (pointer_expression "*this_1" * identifier)) ;) (declaration "Symbol *gsym;" type_identifier (pointer_declarator "*gsym" * identifier) ;) (expression_statement "Target_s390<32> *in_stack_ffffff94;" (binary_expression "Target_s390<32> *in_stack_ffffff94" (binary_expression "Target_s390<32" identifier < number_literal) > (pointer_expression "*in_stack_ffffff94" * identifier)) ;) (declaration "Symbol_table *in_stack_ffffff98;" type_identifier (pointer_declarator "*in_stack_ffffff98" * identifier) ;) (declaration "Layout *in_stack_ffffff9c;" type_identifier (pointer_declarator "*in_stack_ffffff9c" * identifier) ;) (declaration "size_t local_44;" primitive_type identifier ;) (declaration "Scan scan;" type_identifier identifier ;) (declaration "bool is_ordinary_1;" primitive_type identifier ;) (declaration "bool is_ordinary;" primitive_type identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (if_statement "if (sh_type == 9) {\n    pcVar5 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus._M_p\n    ;\n    pcVar8 = (char *)gettext(unaff_EDI + 0x233df7);\n    gold::gold_error(pcVar8,pcVar5);\n    return;\n  }" if (parenthesized_expression "(sh_type == 9)" ( (binary_expression "sh_type == 9" identifier == number_literal) )) (compound_statement "{\n    pcVar5 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus._M_p\n    ;\n    pcVar8 = (char *)gettext(unaff_EDI + 0x233df7);\n    gold::gold_error(pcVar8,pcVar5);\n    return;\n  }" { (expression_statement "pcVar5 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus._M_p\n    ;" (assignment_expression "pcVar5 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus._M_p" identifier = (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus._M_p" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(object->super_Sized_relobj<32,_true>)" ( (comma_expression "object->super_Sized_relobj<32,_true" (binary_expression "object->super_Sized_relobj<32" (field_expression "object->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "pcVar8 = (char *)gettext(unaff_EDI + 0x233df7);" (assignment_expression "pcVar8 = (char *)gettext(unaff_EDI + 0x233df7)" identifier = (cast_expression "(char *)gettext(unaff_EDI + 0x233df7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(unaff_EDI + 0x233df7)" identifier (argument_list "(unaff_EDI + 0x233df7)" ( (binary_expression "unaff_EDI + 0x233df7" identifier + number_literal) ))))) ;) (labeled_statement "gold::gold_error(pcVar8,pcVar5);" statement_identifier : (ERROR ":" :) (expression_statement "gold_error(pcVar8,pcVar5);" (call_expression "gold_error(pcVar8,pcVar5)" identifier (argument_list "(pcVar8,pcVar5)" ( identifier , identifier ))) ;)) (return_statement "return;" return ;) })) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (if_statement "if (reloc_count != 0) {\n    do {\n      layout_00 = in_stack_ffffff8c;\n      if (needs_special_offset_handling) {\n        uVar11 = *(uint *)prelocs;\n        bVar7 = gold::Output_section::is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18));\n        layout_00 = in_stack_ffffff8c;\n        if (bVar7) goto LAB_0021c6ca;\n      }\n      else {\nLAB_0021c6ca:\n        uVar11 = *(uint *)(prelocs + 4);\n        pLVar12 = (Layout *)(uVar11 >> 0x18);\n        symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n        if (symndx_00 < param_10) {\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }\n        else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }\n      }\n_L5076:\n      local_44 = local_44 + 1;\n      prelocs = prelocs + 0xc;\n    } while (reloc_count != local_44);\n  }" if (parenthesized_expression "(reloc_count != 0)" ( (binary_expression "reloc_count != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      layout_00 = in_stack_ffffff8c;\n      if (needs_special_offset_handling) {\n        uVar11 = *(uint *)prelocs;\n        bVar7 = gold::Output_section::is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18));\n        layout_00 = in_stack_ffffff8c;\n        if (bVar7) goto LAB_0021c6ca;\n      }\n      else {\nLAB_0021c6ca:\n        uVar11 = *(uint *)(prelocs + 4);\n        pLVar12 = (Layout *)(uVar11 >> 0x18);\n        symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n        if (symndx_00 < param_10) {\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }\n        else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }\n      }\n_L5076:\n      local_44 = local_44 + 1;\n      prelocs = prelocs + 0xc;\n    } while (reloc_count != local_44);\n  }" { (do_statement "do {\n      layout_00 = in_stack_ffffff8c;\n      if (needs_special_offset_handling) {\n        uVar11 = *(uint *)prelocs;\n        bVar7 = gold::Output_section::is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18));\n        layout_00 = in_stack_ffffff8c;\n        if (bVar7) goto LAB_0021c6ca;\n      }\n      else {\nLAB_0021c6ca:\n        uVar11 = *(uint *)(prelocs + 4);\n        pLVar12 = (Layout *)(uVar11 >> 0x18);\n        symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n        if (symndx_00 < param_10) {\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }\n        else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }\n      }\n_L5076:\n      local_44 = local_44 + 1;\n      prelocs = prelocs + 0xc;\n    } while (reloc_count != local_44);" do (compound_statement "{\n      layout_00 = in_stack_ffffff8c;\n      if (needs_special_offset_handling) {\n        uVar11 = *(uint *)prelocs;\n        bVar7 = gold::Output_section::is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18));\n        layout_00 = in_stack_ffffff8c;\n        if (bVar7) goto LAB_0021c6ca;\n      }\n      else {\nLAB_0021c6ca:\n        uVar11 = *(uint *)(prelocs + 4);\n        pLVar12 = (Layout *)(uVar11 >> 0x18);\n        symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n        if (symndx_00 < param_10) {\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }\n        else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }\n      }\n_L5076:\n      local_44 = local_44 + 1;\n      prelocs = prelocs + 0xc;\n    }" { (expression_statement "layout_00 = in_stack_ffffff8c;" (assignment_expression "layout_00 = in_stack_ffffff8c" identifier = identifier) ;) (if_statement "if (needs_special_offset_handling) {\n        uVar11 = *(uint *)prelocs;\n        bVar7 = gold::Output_section::is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18));\n        layout_00 = in_stack_ffffff8c;\n        if (bVar7) goto LAB_0021c6ca;\n      }\n      else {\nLAB_0021c6ca:\n        uVar11 = *(uint *)(prelocs + 4);\n        pLVar12 = (Layout *)(uVar11 >> 0x18);\n        symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n        if (symndx_00 < param_10) {\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }\n        else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }\n      }" if (parenthesized_expression "(needs_special_offset_handling)" ( identifier )) (compound_statement "{\n        uVar11 = *(uint *)prelocs;\n        bVar7 = gold::Output_section::is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18));\n        layout_00 = in_stack_ffffff8c;\n        if (bVar7) goto LAB_0021c6ca;\n      }" { (expression_statement "uVar11 = *(uint *)prelocs;" (assignment_expression "uVar11 = *(uint *)prelocs" identifier = (pointer_expression "*(uint *)prelocs" * (cast_expression "(uint *)prelocs" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (ERROR "bVar7 = gold::" (assignment_expression "bVar7 = gold" identifier = identifier) : :) (labeled_statement "Output_section::is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18));" statement_identifier : (ERROR ":" :) (expression_statement "is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18));" (call_expression "is_input_address_mapped\n                          (output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18))" identifier (argument_list "(output_section,(Relobj *)object,data_shndx,\n                           (ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18))" ( identifier , (cast_expression "(Relobj *)object" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (call_expression "(ulonglong)\n                           (uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18)" ( (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                           uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal)) ))) ))) ;)) (expression_statement "layout_00 = in_stack_ffffff8c;" (assignment_expression "layout_00 = in_stack_ffffff8c" identifier = identifier) ;) (if_statement "if (bVar7) goto LAB_0021c6ca;" if (parenthesized_expression "(bVar7)" ( identifier )) (goto_statement "goto LAB_0021c6ca;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0021c6ca:\n        uVar11 = *(uint *)(prelocs + 4);\n        pLVar12 = (Layout *)(uVar11 >> 0x18);\n        symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n        if (symndx_00 < param_10) {\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }\n        else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }\n      }" else (compound_statement "{\nLAB_0021c6ca:\n        uVar11 = *(uint *)(prelocs + 4);\n        pLVar12 = (Layout *)(uVar11 >> 0x18);\n        symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n        if (symndx_00 < param_10) {\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }\n        else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }\n      }" { (labeled_statement "LAB_0021c6ca:\n        uVar11 = *(uint *)(prelocs + 4);" statement_identifier : (expression_statement "uVar11 = *(uint *)(prelocs + 4);" (assignment_expression "uVar11 = *(uint *)(prelocs + 4)" identifier = (pointer_expression "*(uint *)(prelocs + 4)" * (cast_expression "(uint *)(prelocs + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(prelocs + 4)" ( (binary_expression "prelocs + 4" identifier + number_literal) ))))) ;)) (expression_statement "pLVar12 = (Layout *)(uVar11 >> 0x18);" (assignment_expression "pLVar12 = (Layout *)(uVar11 >> 0x18)" identifier = (cast_expression "(Layout *)(uVar11 >> 0x18)" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar11 >> 0x18)" ( (binary_expression "uVar11 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);" (assignment_expression "symndx_00 = (Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8)" identifier = (cast_expression "(Layout *)\n                    (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8)" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8)" ( (binary_expression "((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8" (parenthesized_expression "((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18)" ( (binary_expression "(uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" (binary_expression "(uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal)) )) >> number_literal) )))) ;) (if_statement "if (symndx_00 < param_10) {\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }\n        else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }" if (parenthesized_expression "(symndx_00 < param_10)" ( (binary_expression "symndx_00 < param_10" identifier < identifier) )) (compound_statement "{\n          if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);\n          if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }\n          if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x231077);\n          gold::gold_error(pcVar8);\n          in_stack_ffffff8c = pLVar12;\n        }" { (if_statement "if (plocal_symbols == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }" if (parenthesized_expression "(plocal_symbols == (uchar *)0x0)" ( (binary_expression "plocal_symbols == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }" { comment (labeled_statement "gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))\n            ;" (call_expression "do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))" identifier (argument_list "(&UNK_00230e60 + unaff_EDI,0x4d,(char *)(unaff_EDI + 0x267e77))" ( (binary_expression "&UNK_00230e60 + unaff_EDI" (pointer_expression "&UNK_00230e60" & identifier) + identifier) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x267e77)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x267e77)" ( (binary_expression "unaff_EDI + 0x267e77" identifier + number_literal) ))) ))) ;)) })) (expression_statement "in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8);" (assignment_expression "in_stack_ffffff8c =\n               (Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8)" identifier = (cast_expression "(Layout *)\n               (uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8)" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(ushort)(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8)" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ushort)" ( identifier ))) (argument_list "(*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8)" ( (binary_expression "*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8 |\n                             *(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8" (binary_expression "*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) << 8" (pointer_expression "*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe)" * (cast_expression "(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plocal_symbols + (int)symndx_00 * 0x10 + 0xe)" ( (binary_expression "plocal_symbols + (int)symndx_00 * 0x10 + 0xe" (binary_expression "plocal_symbols + (int)symndx_00 * 0x10" identifier + (binary_expression "(int)symndx_00 * 0x10" (cast_expression "(int)symndx_00" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe) >> 8" (pointer_expression "*(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe)" * (cast_expression "(ushort *)(plocal_symbols + (int)symndx_00 * 0x10 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plocal_symbols + (int)symndx_00 * 0x10 + 0xe)" ( (binary_expression "plocal_symbols + (int)symndx_00 * 0x10 + 0xe" (binary_expression "plocal_symbols + (int)symndx_00 * 0x10" identifier + (binary_expression "(int)symndx_00 * 0x10" (cast_expression "(int)symndx_00" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) >> number_literal)) ))))) ;) (if_statement "if (in_stack_ffffff8c < (Layout *)0xff00) {\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }\n          else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }" if (parenthesized_expression "(in_stack_ffffff8c < (Layout *)0xff00)" ( (binary_expression "in_stack_ffffff8c < (Layout *)0xff00" identifier < (cast_expression "(Layout *)0xff00" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }\n          }" { (labeled_statement "LAB_0021caf0:\n            if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }" statement_identifier : (if_statement "if (in_stack_ffffff8c != (Layout *)0x0) {\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }" if (parenthesized_expression "(in_stack_ffffff8c != (Layout *)0x0)" ( (binary_expression "in_stack_ffffff8c != (Layout *)0x0" identifier != (cast_expression "(Layout *)0x0" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;\n              if ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }\n              if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;\n            }" { (expression_statement "ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start;" (field_expression "ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_start" (field_expression "ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl" (binary_expression "ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std" (assignment_expression "ppOVar3 = (object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold" identifier = (binary_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(object->super_Sized_relobj<32,_true>)" ( (comma_expression "object->super_Sized_relobj<32,_true" (binary_expression "object->super_Sized_relobj<32" (field_expression "object->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_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 ((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c) {\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }" if (parenthesized_expression "((Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c)" ( (binary_expression "(Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= in_stack_ffffff8c" (cast_expression "(Layout *)\n                  ((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2)" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2)" ( (binary_expression "(int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3 >> 2" (binary_expression "(int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (int)ppOVar3" (field_expression "(int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish" (field_expression "(int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl" (binary_expression "(int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold::Output_section*,_std" (binary_expression "(int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base<gold" (cast_expression "(int)(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n                        super__Vector_base" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.output_sections_" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(object->super_Sized_relobj<32,_true>)" ( (comma_expression "object->super_Sized_relobj<32,_true" (binary_expression "object->super_Sized_relobj<32" (field_expression "object->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_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) - (cast_expression "(int)ppOVar3" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));\n              }" { comment (labeled_statement "gold::do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b));" (call_expression "do_gold_unreachable\n                          (&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b))" identifier (argument_list "(&UNK_00230d0c + unaff_EDI,0x50b,(char *)(unaff_EDI + 0x26852b))" ( (binary_expression "&UNK_00230d0c + unaff_EDI" (pointer_expression "&UNK_00230d0c" & identifier) + identifier) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x26852b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x26852b)" ( (binary_expression "unaff_EDI + 0x26852b" identifier + number_literal) ))) ))) ;)) })) (if_statement "if ((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)) goto _L5076;" if (parenthesized_expression "((ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7))" ( (binary_expression "(ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0) &&\n                 (in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)" (parenthesized_expression "(ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0)" ( (binary_expression "ppOVar3[(int)in_stack_ffffff8c] == (Output_section *)0x0" (subscript_expression "ppOVar3[(int)in_stack_ffffff8c]" identifier [ (cast_expression "(int)in_stack_ffffff8c" ( (type_descriptor "int" primitive_type) ) identifier) ]) == (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7)" ( (ERROR "in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold::Symbol_table::" (comma_expression "in_stack_ffffff88 = (Symbol_table *)object,\n                 bVar7 = gold" (assignment_expression "in_stack_ffffff88 = (Symbol_table *)object" identifier = (cast_expression "(Symbol_table *)object" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (assignment_expression "bVar7 = gold" identifier = identifier)) : : identifier : :) (comma_expression "is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c),\n                 layout_00 = in_stack_ffffff8c, !bVar7" (call_expression "is_section_folded\n                                   (symtab,(Relobj *)object,(uint)in_stack_ffffff8c)" identifier (argument_list "(symtab,(Relobj *)object,(uint)in_stack_ffffff8c)" ( identifier , (cast_expression "(Relobj *)object" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(uint)in_stack_ffffff8c" ( (type_descriptor "uint" type_identifier) ) identifier) ))) , (comma_expression "layout_00 = in_stack_ffffff8c, !bVar7" (assignment_expression "layout_00 = in_stack_ffffff8c" identifier = identifier) , (unary_expression "!bVar7" ! identifier))) ))) )) (goto_statement "goto _L5076;" goto statement_identifier ;)) }))) }) (else_clause "else if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }" else (if_statement "if (in_stack_ffffff8c == (Layout *)0xffff) {\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }" if (parenthesized_expression "(in_stack_ffffff8c == (Layout *)0xffff)" ( (binary_expression "in_stack_ffffff8c == (Layout *)0xffff" identifier == (cast_expression "(Layout *)0xffff" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n            if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }\n            layout_00 = symndx_00;\n            in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);\n            goto LAB_0021caf0;\n          }" { (expression_statement "this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;" (assignment_expression "this_00 = (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_" identifier = (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(object->super_Sized_relobj<32,_true>)" ( (comma_expression "object->super_Sized_relobj<32,_true" (binary_expression "object->super_Sized_relobj<32" (field_expression "object->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (this_00 == (Xindex *)0x0) {\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }" if (parenthesized_expression "(this_00 == (Xindex *)0x0)" ( (binary_expression "this_00 == (Xindex *)0x0" identifier == (cast_expression "(Xindex *)0x0" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);\n              (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n            }" { (expression_statement "this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object);" (assignment_expression "this_00 = (Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object)" identifier = (cast_expression "(Xindex *)\n                        (*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object)" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])(object)" (parenthesized_expression "(*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b])" ( (pointer_expression "*(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b]" * (subscript_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object[0x1b]" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.\n                          _vptr_Object" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(object->super_Sized_relobj<32,_true>)" ( (comma_expression "object->super_Sized_relobj<32,_true" (binary_expression "object->super_Sized_relobj<32" (field_expression "object->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) )) (argument_list "(object)" ( identifier ))))) ;) (expression_statement "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;" (assignment_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(object->super_Sized_relobj<32,_true>)" ( (comma_expression "object->super_Sized_relobj<32,_true" (binary_expression "object->super_Sized_relobj<32" (field_expression "object->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) })) (expression_statement "layout_00 = symndx_00;" (assignment_expression "layout_00 = symndx_00" identifier = identifier) ;) (ERROR "in_stack_ffffff8c =\n                 (Layout *)\n                 gold::Xindex::" (assignment_expression "in_stack_ffffff8c =\n                 (Layout *)\n                 gold" identifier = (cast_expression "(Layout *)\n                 gold" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : : identifier : :) (expression_statement "sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00);" (call_expression "sym_xindex_to_shndx(this_00,(Object *)object,(uint)symndx_00)" identifier (argument_list "(this_00,(Object *)object,(uint)symndx_00)" ( identifier , (cast_expression "(Object *)object" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(uint)symndx_00" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (goto_statement "goto LAB_0021caf0;" goto statement_identifier ;) })))) (if_statement "if ((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10) {\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }" if (parenthesized_expression "((plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10)" ( (binary_expression "(plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf) == 10" (parenthesized_expression "(plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf)" ( (binary_expression "plocal_symbols[(int)symndx_00 * 0x10 + 0xc] & 0xf" (subscript_expression "plocal_symbols[(int)symndx_00 * 0x10 + 0xc]" identifier [ (binary_expression "(int)symndx_00 * 0x10 + 0xc" (binary_expression "(int)symndx_00 * 0x10" (cast_expression "(int)symndx_00" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n            this_1 = (Output_data_plt_s390<32> *)0x21c9f3;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }\n          }" { (expression_statement "this_1 = (Output_data_plt_s390<32> *)0x21c9f3;" (assignment_expression "this_1 = (Output_data_plt_s390<32> *)0x21c9f3" identifier = (parenthesized_expression "(Output_data_plt_s390<32> *)0x21c9f3" ( (binary_expression "Output_data_plt_s390<32> *)0x21c9f3" (binary_expression "Output_data_plt_s390<32" identifier < number_literal) > (pointer_expression "*)0x21c9f3" * (ERROR ")" )) number_literal)) ))) ;) (ERROR "bVar7 = Scan::" (assignment_expression "bVar7 = Scan" identifier = identifier) : :) (expression_statement "reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);" (call_expression "reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c)" identifier (argument_list "((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c)" ( (cast_expression "(Scan *)in_stack_ffffff94" ( (type_descriptor "Scan *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (parenthesized_expression "(Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c)" ( (comma_expression "Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (comma_expression "_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c" (binary_expression "_true> *)in_stack_ffffff98" identifier > (pointer_expression "*)in_stack_ffffff98" * (ERROR ")" )) identifier)) , (cast_expression "(uint)in_stack_ffffff9c" ( (type_descriptor "uint" type_identifier) ) identifier))) )) ))) ;) (if_statement "if (bVar7) {\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n              uVar11 = *(uint *)(prelocs + 4);\n              symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);\n              pSVar9 = symndx;\n              bVar7 = gold::Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);\n              if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }\n            }" { (expression_statement "uVar11 = *(uint *)(prelocs + 4);" (assignment_expression "uVar11 = *(uint *)(prelocs + 4)" identifier = (pointer_expression "*(uint *)(prelocs + 4)" * (cast_expression "(uint *)(prelocs + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(prelocs + 4)" ( (binary_expression "prelocs + 4" identifier + number_literal) ))))) ;) (expression_statement "symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8);" (assignment_expression "symndx = (Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8)" identifier = (cast_expression "(Symbol_table *)\n                       (((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8)" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8)" ( (binary_expression "((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18) >> 8" (parenthesized_expression "((uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18)" ( (binary_expression "(uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" (binary_expression "(uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal)) )) >> number_literal) )))) ;) (expression_statement "pSVar9 = symndx;" (assignment_expression "pSVar9 = symndx" identifier = identifier) ;) (ERROR "bVar7 = gold::" (assignment_expression "bVar7 = gold" identifier = identifier) : :) (expression_statement "Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx);" (comma_expression "Sized_relobj_file<32,_true>::local_has_plt_offset(object,(uint)symndx)" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_true>::local_has_plt_offset(object,(uint)symndx)" identifier > (ERROR "::" : :) (call_expression "local_has_plt_offset(object,(uint)symndx)" identifier (argument_list "(object,(uint)symndx)" ( identifier , (cast_expression "(uint)symndx" ( (type_descriptor "uint" type_identifier) ) identifier) ))))) ;) (if_statement "if (!bVar7) {\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }" if (parenthesized_expression "(!bVar7)" ( (unary_expression "!bVar7" ! identifier) )) (compound_statement "{\n                pOVar10 = this->plt_;\n                if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }\n                uVar11 = pOVar10->irelative_count_;\n                pOVar10->irelative_count_ = uVar11 + 1;\n                pOVar2 = pOVar10->got_irelative_;\n                address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;\n                iVar1 = address + 4;\n                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }\n                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;\n                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;\n                in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);\n                in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;\n                gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);\n                local_20 = 0;\n                gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);\n                gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);\n              }" { (expression_statement "pOVar10 = this->plt_;" (assignment_expression "pOVar10 = this->plt_" identifier = (field_expression "this->plt_" identifier -> field_identifier)) ;) (if_statement "if (pOVar10 == (Output_data_plt_s390<32> *)0x0) {\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }" if (parenthesized_expression "(pOVar10 == (Output_data_plt_s390<32> *)0x0)" ( (binary_expression "pOVar10 == (Output_data_plt_s390<32> *)0x0)" identifier == (parenthesized_expression "(Output_data_plt_s390<32> *)0x0)" ( (binary_expression "Output_data_plt_s390<32> *)0x0" (binary_expression "Output_data_plt_s390<32" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n                  this_1 = (Output_data_plt_s390<32> *)0x21d79b;\n                  make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);\n                  pOVar10 = this->plt_;\n                }" { (expression_statement "this_1 = (Output_data_plt_s390<32> *)0x21d79b;" (assignment_expression "this_1 = (Output_data_plt_s390<32> *)0x21d79b" identifier = (parenthesized_expression "(Output_data_plt_s390<32> *)0x21d79b" ( (binary_expression "Output_data_plt_s390<32> *)0x21d79b" (binary_expression "Output_data_plt_s390<32" identifier < number_literal) > (pointer_expression "*)0x21d79b" * (ERROR ")" )) number_literal)) ))) ;) (expression_statement "make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);" (call_expression "make_plt_section(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c)" identifier (argument_list "(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c)" ( identifier , identifier , identifier ))) ;) (expression_statement "pOVar10 = this->plt_;" (assignment_expression "pOVar10 = this->plt_" identifier = (field_expression "this->plt_" identifier -> field_identifier)) ;) })) (expression_statement "uVar11 = pOVar10->irelative_count_;" (assignment_expression "uVar11 = pOVar10->irelative_count_" identifier = (field_expression "pOVar10->irelative_count_" identifier -> field_identifier)) ;) (expression_statement "pOVar10->irelative_count_ = uVar11 + 1;" (assignment_expression "pOVar10->irelative_count_ = uVar11 + 1" (field_expression "pOVar10->irelative_count_" identifier -> field_identifier) = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "pOVar2 = pOVar10->got_irelative_;" (assignment_expression "pOVar2 = pOVar10->got_irelative_" identifier = (field_expression "pOVar10->got_irelative_" identifier -> field_identifier)) ;) (expression_statement "address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_;" (assignment_expression "address = (Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_" identifier = (field_expression "(Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data.data_size_" (field_expression "(Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data.super_Output_data" (field_expression "(Address)(pOVar2->super_Output_section_data_build).\n                                   super_Output_section_data" (call_expression "(Address)(pOVar2->super_Output_section_data_build)" (parenthesized_expression "(Address)" ( identifier )) (argument_list "(pOVar2->super_Output_section_data_build)" ( (field_expression "pOVar2->super_Output_section_data_build" identifier -> field_identifier) ))) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "iVar1 = address + 4;" (assignment_expression "iVar1 = address + 4" identifier = (binary_expression "address + 4" identifier + number_literal)) ;) (if_statement "if (((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }" if (parenthesized_expression "(((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0)" ( (binary_expression "((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2) != 0" (parenthesized_expression "((pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2)" ( (binary_expression "(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c & 2" (field_expression "(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.field_0x1c" (field_expression "(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data" (field_expression "(pOVar2->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar2->super_Output_section_data_build)" ( (field_expression "pOVar2->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                  gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));\n                }" { comment (labeled_statement "gold::do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827));" (call_expression "do_gold_unreachable\n                            (&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827))" identifier (argument_list "(&UNK_00230ce4 + unaff_EDI,0x231,(char *)(unaff_EDI + 0x268827))" ( (binary_expression "&UNK_00230ce4 + unaff_EDI" (pointer_expression "&UNK_00230ce4" & identifier) + identifier) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x268827)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x268827)" ( (binary_expression "unaff_EDI + 0x268827" identifier + number_literal) ))) ))) ;)) })) (expression_statement "*(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1;" (assignment_expression "*(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ = iVar1" (pointer_expression "*(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_" * (cast_expression "(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_" & (field_expression "(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_" (field_expression "(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data" (field_expression "(pOVar2->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar2->super_Output_section_data_build)" ( (field_expression "pOVar2->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f;" (assignment_expression "*(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4) = iVar1 >> 0x1f" (pointer_expression "*(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4)" * (cast_expression "(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4)" ( (binary_expression "(int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_ + 4" (cast_expression "(int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_" & (field_expression "(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data.data_size_" (field_expression "(pOVar2->super_Output_section_data_build).super_Output_section_data.\n                               super_Output_data" (field_expression "(pOVar2->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar2->super_Output_section_data_build)" ( (field_expression "pOVar2->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) )))) = (binary_expression "iVar1 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1);" (assignment_expression "in_stack_ffffff98 =\n                     (Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1)" identifier = (binary_expression "(Symbol_table *)\n                     Output_data_plt_s390<32>::rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1)" (binary_expression "(Symbol_table *)\n                     Output_data_plt_s390<32" (cast_expression "(Symbol_table *)\n                     Output_data_plt_s390" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < number_literal) > (ERROR "::" : :) (call_expression "rela_irelative\n                               ((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1)" identifier (argument_list "((Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1)" ( (parenthesized_expression "(Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1)" ( (comma_expression "Output_data_plt_s390<32> *)layout,pSVar9,layout_00,this_1" (binary_expression "Output_data_plt_s390<32> *)layout" (binary_expression "Output_data_plt_s390<32" identifier < number_literal) > (pointer_expression "*)layout" * (ERROR ")" )) identifier)) , (comma_expression "pSVar9,layout_00,this_1" identifier , (comma_expression "layout_00,this_1" identifier , identifier))) )) ))))) ;) (expression_statement "in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_;" (assignment_expression "in_stack_ffffff9c = (Layout *)pOVar10->got_irelative_" identifier = (cast_expression "(Layout *)pOVar10->got_irelative_" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pOVar10->got_irelative_" identifier -> field_identifier))) ;) (labeled_statement "gold::Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);" statement_identifier : (ERROR ":" :) (expression_statement "Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false);" (comma_expression "Output_reloc<9,_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false)" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false)" identifier , (comma_expression "_32,_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false)" identifier , (binary_expression "_true>::Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false)" identifier > (ERROR "::" : :) (call_expression "Output_reloc\n                          ((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false)" identifier (argument_list "((Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false)" ( (parenthesized_expression "(Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false)" ( (comma_expression "Output_reloc<9,_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false" identifier , (comma_expression "_32,_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false" identifier , (comma_expression "_true> *)&is_ordinary,\n                           &object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false" (binary_expression "_true> *)&is_ordinary" identifier > (pointer_expression "*)&is_ordinary" * (ERROR ")" )) (pointer_expression "&is_ordinary" & identifier))) , (comma_expression "&object->super_Sized_relobj<32,_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false" (binary_expression "&object->super_Sized_relobj<32" (pointer_expression "&object->super_Sized_relobj" & (field_expression "object->super_Sized_relobj" identifier -> field_identifier)) < number_literal) , (comma_expression "_true>,(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false" (binary_expression "_true>" identifier > identifier) , (comma_expression "(uint)symndx,0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false" (cast_expression "(uint)symndx" ( (type_descriptor "uint" type_identifier) ) identifier) , (comma_expression "0x3d,\n                           (Output_data *)in_stack_ffffff9c,address,false,true,false,false" number_literal , (comma_expression "(Output_data *)in_stack_ffffff9c,address,false,true,false,false" (cast_expression "(Output_data *)in_stack_ffffff9c" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (comma_expression "address,false,true,false,false" identifier , (comma_expression "false,true,false,false" false , (comma_expression "true,false,false" true , (comma_expression "false,false" false , false))))))))))))) )) ))))))) ;)) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (labeled_statement "gold::Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);" statement_identifier : (ERROR ":" :) (expression_statement "Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary);" (comma_expression "Output_data_reloc_base<4,_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary)" (binary_expression "Output_data_reloc_base<4" identifier < number_literal) , (comma_expression "_true,_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary)" identifier , (comma_expression "_32,_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary)" identifier , (binary_expression "_true>::add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary)" identifier > (ERROR "::" : :) (call_expression "add\n                          ((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary)" identifier (argument_list "((Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary)" ( (parenthesized_expression "(Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary)" ( (comma_expression "Output_data_reloc_base<4,_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary" (binary_expression "Output_data_reloc_base<4" identifier < number_literal) , (comma_expression "_true,_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary" identifier , (comma_expression "_32,_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary" identifier , (comma_expression "_true> *)in_stack_ffffff98,\n                           (Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary" (binary_expression "_true> *)in_stack_ffffff98" identifier > (pointer_expression "*)in_stack_ffffff98" * (ERROR ")" )) identifier)) , (comma_expression "(Output_data *)in_stack_ffffff9c,(Output_reloc_type *)&is_ordinary" (cast_expression "(Output_data *)in_stack_ffffff9c" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(Output_reloc_type *)&is_ordinary" ( (type_descriptor "Output_reloc_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&is_ordinary" & identifier))))))) )) ))))))) ;)) (labeled_statement "gold::Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);" statement_identifier : (ERROR ":" :) (expression_statement "Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5);" (comma_expression "Sized_relobj_file<32,_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5)" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_true>::set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5)" identifier > (ERROR "::" : :) (call_expression "set_local_plt_offset\n                          (object,(uint)symndx,uVar11 << 5)" identifier (argument_list "(object,(uint)symndx,uVar11 << 5)" ( identifier , (cast_expression "(uint)symndx" ( (type_descriptor "uint" type_identifier) ) identifier) , (binary_expression "uVar11 << 5" identifier << number_literal) ))))) ;)) })) })) })) (if_statement "if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" if (parenthesized_expression "(pLVar12 < (Layout *)0xfc)" ( (binary_expression "pLVar12 < (Layout *)0xfc" identifier < (cast_expression "(Layout *)0xfc" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" { comment comment (expression_statement "(*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))();" (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987)" ( (binary_expression "*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI + 0x3cd987" (binary_expression "*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x26709f + (int)pLVar12 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x26709f + (int)pLVar12 * 4)" ( (binary_expression "unaff_EDI + 0x26709f + (int)pLVar12 * 4" (binary_expression "unaff_EDI + 0x26709f" identifier + number_literal) + (binary_expression "(int)pLVar12 * 4" (cast_expression "(int)pLVar12" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;" (assignment_expression "in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p" identifier = (cast_expression "(Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(object->super_Sized_relobj<32,_true>)" ( (comma_expression "object->super_Sized_relobj<32,_true" (binary_expression "object->super_Sized_relobj<32" (field_expression "object->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "pcVar8 = (char *)gettext(unaff_EDI + 0x231077);" (assignment_expression "pcVar8 = (char *)gettext(unaff_EDI + 0x231077)" identifier = (cast_expression "(char *)gettext(unaff_EDI + 0x231077)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(unaff_EDI + 0x231077)" identifier (argument_list "(unaff_EDI + 0x231077)" ( (binary_expression "unaff_EDI + 0x231077" identifier + number_literal) ))))) ;) (labeled_statement "gold::gold_error(pcVar8);" statement_identifier : (ERROR ":" :) (expression_statement "gold_error(pcVar8);" (call_expression "gold_error(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;)) (expression_statement "in_stack_ffffff8c = pLVar12;" (assignment_expression "in_stack_ffffff8c = pLVar12" identifier = identifier) ;) }) (else_clause "else {\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }" else (compound_statement "{\n          if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }\n          uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;\n          ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;\n          if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }\n          pSVar9 = (Symbol_table *)ppSVar4[uVar11];\n          if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }\n          if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }\n          if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }\n          gold::Symbol::demangled_name((Symbol *)pSVar9);\n          aVar6 = _is_ordinary;\n          in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;\n          pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);\n                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */\n          gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);\n          in_stack_ffffff8c = pLVar12;\n          if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }\n        }" { (if_statement "if (symndx_00 < (Layout *)object->local_symbol_count_) {\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }" if (parenthesized_expression "(symndx_00 < (Layout *)object->local_symbol_count_)" ( (binary_expression "symndx_00 < (Layout *)object->local_symbol_count_" identifier < (cast_expression "(Layout *)object->local_symbol_count_" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "object->local_symbol_count_" identifier -> field_identifier))) )) (compound_statement "{\nLAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;\n          }" { (labeled_statement "LAB_0021dc20:\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;" statement_identifier : comment (labeled_statement "gold::do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))\n            ;" (call_expression "do_gold_unreachable(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))" identifier (argument_list "(&UNK_00230e60 + unaff_EDI,0x6a,(char *)(unaff_EDI + 0x267e77))" ( (binary_expression "&UNK_00230e60 + unaff_EDI" (pointer_expression "&UNK_00230e60" & identifier) + identifier) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x267e77)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x267e77)" ( (binary_expression "unaff_EDI + 0x267e77" identifier + number_literal) ))) ))) ;))) })) (expression_statement "uVar11 = (int)symndx_00 - (int)object->local_symbol_count_;" (assignment_expression "uVar11 = (int)symndx_00 - (int)object->local_symbol_count_" identifier = (binary_expression "(int)symndx_00 - (int)object->local_symbol_count_" (cast_expression "(int)symndx_00" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)object->local_symbol_count_" ( (type_descriptor "int" primitive_type) ) (field_expression "object->local_symbol_count_" identifier -> field_identifier)))) ;) (expression_statement "ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start;" (field_expression "ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                    _M_start" (field_expression "ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl" (binary_expression "ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold::Symbol*,_std" (assignment_expression "ppSVar4 = (object->symbols_).\n                    super__Vector_base<gold" identifier = (binary_expression "(object->symbols_).\n                    super__Vector_base<gold" (field_expression "(object->symbols_).\n                    super__Vector_base" (parenthesized_expression "(object->symbols_)" ( (field_expression "object->symbols_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if ((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11) {\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }" if (parenthesized_expression "((uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11)" ( (binary_expression "(uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2) <= uVar11" (call_expression "(uint)((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2)" ( (binary_expression "(int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4 >> 2" (binary_expression "(int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (int)ppSVar4" (field_expression "(int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish" (field_expression "(int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl" (binary_expression "(int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "(int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "(int)(object->symbols_).\n                          super__Vector_base<gold::Symbol*,_std" (binary_expression "(int)(object->symbols_).\n                          super__Vector_base<gold" (cast_expression "(int)(object->symbols_).\n                          super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(object->symbols_).\n                          super__Vector_base" (parenthesized_expression "(object->symbols_)" ( (field_expression "object->symbols_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)ppSVar4" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));\n          }" { comment (labeled_statement "gold::do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7));" (call_expression "do_gold_unreachable\n                      (&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7))" identifier (argument_list "(&UNK_00230d0c + unaff_EDI,0x8ad,(char *)(unaff_EDI + 0x267fa7))" ( (binary_expression "&UNK_00230d0c + unaff_EDI" (pointer_expression "&UNK_00230d0c" & identifier) + identifier) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x267fa7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x267fa7)" ( (binary_expression "unaff_EDI + 0x267fa7" identifier + number_literal) ))) ))) ;)) })) (expression_statement "pSVar9 = (Symbol_table *)ppSVar4[uVar11];" (assignment_expression "pSVar9 = (Symbol_table *)ppSVar4[uVar11]" identifier = (cast_expression "(Symbol_table *)ppSVar4[uVar11]" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "ppSVar4[uVar11]" identifier [ identifier ]))) ;) (if_statement "if (pSVar9 == (Symbol_table *)0x0) goto LAB_0021dc20;" if (parenthesized_expression "(pSVar9 == (Symbol_table *)0x0)" ( (binary_expression "pSVar9 == (Symbol_table *)0x0" identifier == (cast_expression "(Symbol_table *)0x0" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0021dc20;" goto statement_identifier ;)) (if_statement "if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0) {\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }" if (parenthesized_expression "(((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0)" ( (binary_expression "((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000) != 0" (parenthesized_expression "((uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000)" ( (binary_expression "(uint)(pSVar9->table_)._M_h._M_bucket_count & 0x100000" (field_expression "(uint)(pSVar9->table_)._M_h._M_bucket_count" (field_expression "(uint)(pSVar9->table_)._M_h" (call_expression "(uint)(pSVar9->table_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pSVar9->table_)" ( (field_expression "pSVar9->table_" identifier -> field_identifier) ))) . field_identifier) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            in_stack_ffffff88 = pSVar9;\n            pSVar9 = (Symbol_table *)gold::Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);\n          }" { (expression_statement "in_stack_ffffff88 = pSVar9;" (assignment_expression "in_stack_ffffff88 = pSVar9" identifier = identifier) ;) (ERROR "pSVar9 = (Symbol_table *)gold::" (assignment_expression "pSVar9 = (Symbol_table *)gold" identifier = (cast_expression "(Symbol_table *)gold" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "Symbol_table::resolve_forwards(symtab,(Symbol *)pSVar9);" statement_identifier : (ERROR ":" :) (expression_statement "resolve_forwards(symtab,(Symbol *)pSVar9);" (call_expression "resolve_forwards(symtab,(Symbol *)pSVar9)" identifier (argument_list "(symtab,(Symbol *)pSVar9)" ( identifier , (cast_expression "(Symbol *)pSVar9" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) })) (if_statement "if (((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10) {\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }" if (parenthesized_expression "(((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10)" ( (binary_expression "((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf) == 10" (parenthesized_expression "((uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf)" ( (binary_expression "(uint)(pSVar9->table_)._M_h._M_bucket_count & 0xf" (field_expression "(uint)(pSVar9->table_)._M_h._M_bucket_count" (field_expression "(uint)(pSVar9->table_)._M_h" (call_expression "(uint)(pSVar9->table_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pSVar9->table_)" ( (field_expression "pSVar9->table_" identifier -> field_identifier) ))) . field_identifier) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            gsym = (Symbol *)0x21d01b;\n            bVar7 = Scan::reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);\n            if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }\n          }" { (expression_statement "gsym = (Symbol *)0x21d01b;" (assignment_expression "gsym = (Symbol *)0x21d01b" identifier = (cast_expression "(Symbol *)0x21d01b" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (ERROR "bVar7 = Scan::" (assignment_expression "bVar7 = Scan" identifier = identifier) : :) (expression_statement "reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c);" (call_expression "reloc_needs_plt_for_ifunc\n                              ((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c)" identifier (argument_list "((Scan *)in_stack_ffffff94,\n                               (Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c)" ( (cast_expression "(Scan *)in_stack_ffffff94" ( (type_descriptor "Scan *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (parenthesized_expression "(Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c)" ( (comma_expression "Sized_relobj_file<32,_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (comma_expression "_true> *)in_stack_ffffff98,\n                               (uint)in_stack_ffffff9c" (binary_expression "_true> *)in_stack_ffffff98" identifier > (pointer_expression "*)in_stack_ffffff98" * (ERROR ")" )) identifier)) , (cast_expression "(uint)in_stack_ffffff9c" ( (type_descriptor "uint" type_identifier) ) identifier))) )) ))) ;) (if_statement "if ((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)) {\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }" if (parenthesized_expression "((bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff))" ( (binary_expression "(bVar7) &&\n               (*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff))" (parenthesized_expression "(bVar7)" ( identifier )) && (parenthesized_expression "(*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff))" ( (binary_expression "*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4) ==\n                (Output_data_plt_s390<32> *)0xffffffff)" (pointer_expression "*(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4)" * (call_expression "(Output_data_plt_s390<32> **)((int)&pSVar9->dynamic_offset_ + 4)" (parenthesized_expression "(Output_data_plt_s390<32> **)" ( (binary_expression "Output_data_plt_s390<32> **" (binary_expression "Output_data_plt_s390<32" identifier < number_literal) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "((int)&pSVar9->dynamic_offset_ + 4)" ( (binary_expression "(int)&pSVar9->dynamic_offset_ + 4" (cast_expression "(int)&pSVar9->dynamic_offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSVar9->dynamic_offset_" & (field_expression "pSVar9->dynamic_offset_" identifier -> field_identifier))) + number_literal) )))) == (parenthesized_expression "(Output_data_plt_s390<32> *)0xffffffff)" ( (binary_expression "Output_data_plt_s390<32> *)0xffffffff" (binary_expression "Output_data_plt_s390<32" identifier < number_literal) > (pointer_expression "*)0xffffffff" * (ERROR ")" )) number_literal)) ))) ))) )) (compound_statement "{\n              make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);\n            }" { (expression_statement "make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym);" (call_expression "make_plt_entry((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym)" identifier (argument_list "((Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym)" ( (parenthesized_expression "(Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym)" ( (comma_expression "Target_s390<32> *)pSVar9,in_stack_ffffff88,layout_00,gsym" (binary_expression "Target_s390<32> *)pSVar9" (binary_expression "Target_s390<32" identifier < number_literal) > (pointer_expression "*)pSVar9" * (ERROR ")" )) identifier)) , (comma_expression "in_stack_ffffff88,layout_00,gsym" identifier , (comma_expression "layout_00,gsym" identifier , identifier))) )) ))) ;) })) })) (if_statement "if (pLVar12 < (Layout *)0xfc) {\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }" if (parenthesized_expression "(pLVar12 < (Layout *)0xfc)" ( (binary_expression "pLVar12 < (Layout *)0xfc" identifier < (cast_expression "(Layout *)0xfc" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();\n            return;\n          }" { comment comment (expression_statement "(*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))();" (call_expression "(*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))()" (parenthesized_expression "(*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      ))" ( (pointer_expression "*(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      )" * (cast_expression "(code *)(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      )" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987\n                      )" ( (binary_expression "*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI + 0x3cd987" (binary_expression "*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI) + unaff_EDI" (pointer_expression "*(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI)" * (cast_expression "(int *)(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI)" ( (binary_expression "&UNK_002674ef + (int)pLVar12 * 4 + unaff_EDI" (binary_expression "&UNK_002674ef + (int)pLVar12 * 4" (pointer_expression "&UNK_002674ef" & identifier) + (binary_expression "(int)pLVar12 * 4" (cast_expression "(int)pLVar12" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + identifier) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (labeled_statement "gold::Symbol::demangled_name((Symbol *)pSVar9);" statement_identifier : (ERROR ":" :) (labeled_statement "Symbol::demangled_name((Symbol *)pSVar9);" statement_identifier : (ERROR ":" :) (expression_statement "demangled_name((Symbol *)pSVar9);" (call_expression "demangled_name((Symbol *)pSVar9)" identifier (argument_list "((Symbol *)pSVar9)" ( (cast_expression "(Symbol *)pSVar9" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (expression_statement "aVar6 = _is_ordinary;" (assignment_expression "aVar6 = _is_ordinary" identifier = identifier) ;) (expression_statement "in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p;" (assignment_expression "in_stack_ffffff88 =\n               (Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p" identifier = (cast_expression "(Symbol_table *)\n               (object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus.\n               _M_p" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_._M_dataplus" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object.name_" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj.super_Object" (field_expression "(object->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(object->super_Sized_relobj<32,_true>)" ( (comma_expression "object->super_Sized_relobj<32,_true" (binary_expression "object->super_Sized_relobj<32" (field_expression "object->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7);" (assignment_expression "pcVar8 = (char *)gettext(unaff_EDI + 0x2310a7)" identifier = (cast_expression "(char *)gettext(unaff_EDI + 0x2310a7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(unaff_EDI + 0x2310a7)" identifier (argument_list "(unaff_EDI + 0x2310a7)" ( (binary_expression "unaff_EDI + 0x2310a7" identifier + number_literal) ))))) ;) comment (labeled_statement "gold::gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);" statement_identifier : (ERROR ":" :) (expression_statement "gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj);" (call_expression "gold_error(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj)" identifier (argument_list "(pcVar8,in_stack_ffffff88,pLVar12,aVar6.relobj)" ( identifier , identifier , identifier , (field_expression "aVar6.relobj" identifier . field_identifier) ))) ;)) (expression_statement "in_stack_ffffff8c = pLVar12;" (assignment_expression "in_stack_ffffff8c = pLVar12" identifier = identifier) ;) (if_statement "if (_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0) {\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }" if (parenthesized_expression "(_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0)" ( (binary_expression "_is_ordinary != (Sized_relobj<32,_true> *)&stack0xffffffd0" (binary_expression "_is_ordinary != (Sized_relobj<32,_true> *)" identifier != (parenthesized_expression "(Sized_relobj<32,_true> *)" ( (comma_expression "Sized_relobj<32,_true> *" (binary_expression "Sized_relobj<32" identifier < number_literal) , (binary_expression "_true> *" identifier > (pointer_expression "*" * identifier))) ))) & identifier) )) (compound_statement "{\n            operator_delete(_is_ordinary);\n            in_stack_ffffff8c = pLVar12;\n          }" { (expression_statement "operator_delete(_is_ordinary);" (call_expression "operator_delete(_is_ordinary)" identifier (argument_list "(_is_ordinary)" ( identifier ))) ;) (expression_statement "in_stack_ffffff8c = pLVar12;" (assignment_expression "in_stack_ffffff8c = pLVar12" identifier = identifier) ;) })) }))) }))) (labeled_statement "_L5076:\n      local_44 = local_44 + 1;" statement_identifier : (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" identifier = (binary_expression "local_44 + 1" identifier + number_literal)) ;)) (expression_statement "prelocs = prelocs + 0xc;" (assignment_expression "prelocs = prelocs + 0xc" identifier = (binary_expression "prelocs + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(reloc_count != local_44)" ( (binary_expression "reloc_count != local_44" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0021c670(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,\n                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,\n                 uint param_11,int param_12)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  char cVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  int aiStackY_a0 [9];\n  undefined1 auStack_6c [4];\n  undefined4 local_68;\n  undefined4 local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  uint local_54;\n  char local_4d;\n  uint local_4c;\n  undefined1 *local_48;\n  int local_44;\n  uint local_40;\n  undefined1 local_3a;\n  undefined1 *local_38 [2];\n  undefined1 local_30 [16];\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  puVar10 = auStack_6c;\n  local_4d = param_10;\n  if (param_6 == 9) {\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }\n  local_5c = unaff_EDI + 0x3ce14f;\n  local_3a = 0;\n  local_44 = 0;\n  local_58 = local_5c;\n  if (param_8 != 0) {\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }\n  return;\n}\n\n" (function_definition "void FUN_0021c670(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,\n                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,\n                 uint param_11,int param_12)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  char cVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  int aiStackY_a0 [9];\n  undefined1 auStack_6c [4];\n  undefined4 local_68;\n  undefined4 local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  uint local_54;\n  char local_4d;\n  uint local_4c;\n  undefined1 *local_48;\n  int local_44;\n  uint local_40;\n  undefined1 local_3a;\n  undefined1 *local_38 [2];\n  undefined1 local_30 [16];\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  puVar10 = auStack_6c;\n  local_4d = param_10;\n  if (param_6 == 9) {\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }\n  local_5c = unaff_EDI + 0x3ce14f;\n  local_3a = 0;\n  local_44 = 0;\n  local_58 = local_5c;\n  if (param_8 != 0) {\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0021c670(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,\n                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,\n                 uint param_11,int param_12)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,\n                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,\n                 uint param_11,int param_12)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "uint *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "char param_10" primitive_type identifier) , (parameter_declaration "uint param_11" type_identifier identifier) , (parameter_declaration "int param_12" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  char cVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  int aiStackY_a0 [9];\n  undefined1 auStack_6c [4];\n  undefined4 local_68;\n  undefined4 local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  uint local_54;\n  char local_4d;\n  uint local_4c;\n  undefined1 *local_48;\n  int local_44;\n  uint local_40;\n  undefined1 local_3a;\n  undefined1 *local_38 [2];\n  undefined1 local_30 [16];\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  puVar10 = auStack_6c;\n  local_4d = param_10;\n  if (param_6 == 9) {\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }\n  local_5c = unaff_EDI + 0x3ce14f;\n  local_3a = 0;\n  local_44 = 0;\n  local_58 = local_5c;\n  if (param_8 != 0) {\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int aiStackY_a0 [9];" primitive_type (array_declarator "aiStackY_a0 [9]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_6c [4];" type_identifier (array_declarator "auStack_6c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "char local_4d;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "undefined1 local_3a;" type_identifier identifier ;) (declaration "undefined1 *local_38 [2];" type_identifier (pointer_declarator "*local_38 [2]" * (array_declarator "local_38 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_30 [16];" type_identifier (array_declarator "local_30 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = auStack_6c;" (assignment_expression "puVar10 = auStack_6c" identifier = identifier) ;) (expression_statement "local_4d = param_10;" (assignment_expression "local_4d = param_10" identifier = identifier) ;) (if_statement "if (param_6 == 9) {\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }" if (parenthesized_expression "(param_6 == 9)" ( (binary_expression "param_6 == 9" identifier == number_literal) )) (compound_statement "{\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }" { (expression_statement "iVar8 = param_4[1];" (assignment_expression "iVar8 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = gettext(unaff_EDI + 0x233df7);" (assignment_expression "uVar7 = gettext(unaff_EDI + 0x233df7)" identifier = (call_expression "gettext(unaff_EDI + 0x233df7)" identifier (argument_list "(unaff_EDI + 0x233df7)" ( (binary_expression "unaff_EDI + 0x233df7" identifier + number_literal) )))) ;) (expression_statement "FUN_0023b810(uVar7,iVar8);" (call_expression "FUN_0023b810(uVar7,iVar8)" identifier (argument_list "(uVar7,iVar8)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "local_5c = unaff_EDI + 0x3ce14f;" (assignment_expression "local_5c = unaff_EDI + 0x3ce14f" identifier = (binary_expression "unaff_EDI + 0x3ce14f" identifier + number_literal)) ;) (expression_statement "local_3a = 0;" (assignment_expression "local_3a = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_58 = local_5c;" (assignment_expression "local_58 = local_5c" identifier = identifier) ;) (if_statement "if (param_8 != 0) {\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }" if (parenthesized_expression "(param_8 != 0)" ( (binary_expression "param_8 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }" { (do_statement "do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);" do (compound_statement "{\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    }" { (expression_statement "puVar11 = puVar10;" (assignment_expression "puVar11 = puVar10" identifier = identifier) ;) (if_statement "if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }" if (parenthesized_expression "(local_4d == '\0')" ( (binary_expression "local_4d == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }" { (labeled_statement "LAB_0021c6ca:\n        uVar9 = param_7[1];" statement_identifier : (expression_statement "uVar9 = param_7[1];" (assignment_expression "uVar9 = param_7[1]" identifier = (subscript_expression "param_7[1]" identifier [ number_literal ])) ;)) (expression_statement "local_40 = uVar9 >> 0x18;" (assignment_expression "local_40 = uVar9 >> 0x18" identifier = (binary_expression "uVar9 >> 0x18" identifier >> number_literal)) ;) (expression_statement "uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;" (assignment_expression "uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" identifier = (binary_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" (parenthesized_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18)" ( (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal)) )) >> number_literal)) ;) (if_statement "if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }" if (parenthesized_expression "(uVar9 < param_11)" ( (binary_expression "uVar9 < param_11" identifier < identifier) )) (compound_statement "{\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }" { (if_statement "if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }" if (parenthesized_expression "(param_12 == 0)" ( (binary_expression "param_12 == 0" identifier == number_literal) )) (compound_statement "{\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }" { (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x267e77" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x4d;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x4d" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x230e60" identifier + number_literal)) ;) (expression_statement "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;" (assignment_expression "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc19" (pointer_expression "*(undefined **)(puVar10 + -0x14)" * (cast_expression "(undefined **)(puVar10 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (pointer_expression "&UNK_0021dc19" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);" (assignment_expression "local_48 = (undefined1 *)(uVar9 * 0x10 + param_12)" identifier = (cast_expression "(undefined1 *)(uVar9 * 0x10 + param_12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 * 0x10 + param_12)" ( (binary_expression "uVar9 * 0x10 + param_12" (binary_expression "uVar9 * 0x10" identifier * number_literal) + identifier) )))) ;) (expression_statement "uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );" (assignment_expression "uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                )" identifier = (call_expression "(uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                )" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ushort)" ( identifier ))) (argument_list "(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                )" ( (binary_expression "*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8" (binary_expression "*(ushort *)(local_48 + 0xe) << 8" (pointer_expression "*(ushort *)(local_48 + 0xe)" * (cast_expression "(ushort *)(local_48 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 0xe)" ( (binary_expression "local_48 + 0xe" identifier + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)(local_48 + 0xe) >> 8" (pointer_expression "*(ushort *)(local_48 + 0xe)" * (cast_expression "(ushort *)(local_48 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 0xe)" ( (binary_expression "local_48 + 0xe" identifier + number_literal) )))) >> number_literal)) )))) ;) (if_statement "if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" if (parenthesized_expression "(uVar6 < 0xff00)" ( (binary_expression "uVar6 < 0xff00" identifier < number_literal) )) (compound_statement "{\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }" { (labeled_statement "LAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }" statement_identifier : (if_statement "if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }" { (expression_statement "local_4c = param_4[0xf];" (assignment_expression "local_4c = param_4[0xf]" identifier = (subscript_expression "param_4[0xf]" identifier [ number_literal ])) ;) (if_statement "if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }" if (parenthesized_expression "((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6)" ( (binary_expression "(uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6" (call_expression "(uint)((int)(local_4c - param_4[0xe]) >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(local_4c - param_4[0xe]) >> 2)" ( (binary_expression "(int)(local_4c - param_4[0xe]) >> 2" (cast_expression "(int)(local_4c - param_4[0xe])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_4c - param_4[0xe])" ( (binary_expression "local_4c - param_4[0xe]" identifier - (subscript_expression "param_4[0xe]" identifier [ number_literal ])) ))) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }" { (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x26852b" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x26852b" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x50b;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x50b" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x230d0c" identifier + number_literal)) ;) (expression_statement "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;" (assignment_expression "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc74" (pointer_expression "*(undefined **)(puVar10 + -0x14)" * (cast_expression "(undefined **)(puVar10 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (pointer_expression "&UNK_0021dc74" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }" if (parenthesized_expression "(*(int *)(param_4[0xe] + uVar6 * 4) == 0)" ( (binary_expression "*(int *)(param_4[0xe] + uVar6 * 4) == 0" (pointer_expression "*(int *)(param_4[0xe] + uVar6 * 4)" * (cast_expression "(int *)(param_4[0xe] + uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[0xe] + uVar6 * 4)" ( (binary_expression "param_4[0xe] + uVar6 * 4" (subscript_expression "param_4[0xe]" identifier [ number_literal ]) + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }" { (expression_statement "*(uint *)(puVar10 + -8) = uVar6;" (assignment_expression "*(uint *)(puVar10 + -8) = uVar6" (pointer_expression "*(uint *)(puVar10 + -8)" * (cast_expression "(uint *)(puVar10 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0xc) = param_4;" (assignment_expression "*(int **)(puVar10 + -0xc) = param_4" (pointer_expression "*(int **)(puVar10 + -0xc)" * (cast_expression "(int **)(puVar10 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = param_2;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = param_2" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cb30;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cb30" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_0034cd20();" (assignment_expression "cVar5 = FUN_0034cd20()" identifier = (call_expression "FUN_0034cd20()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 == '\0') goto LAB_0021c770;" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0021c770;" goto statement_identifier ;)) })) }))) }) (else_clause "else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" else (if_statement "if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" if (parenthesized_expression "(uVar6 == 0xffff)" ( (binary_expression "uVar6 == 0xffff" identifier == number_literal) )) (compound_statement "{\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" { (expression_statement "iVar8 = param_4[0xc];" (assignment_expression "iVar8 = param_4[0xc]" identifier = (subscript_expression "param_4[0xc]" identifier [ number_literal ])) ;) (if_statement "if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }" { (expression_statement "iVar8 = *param_4;" (assignment_expression "iVar8 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "*(int **)(puVar10 + -0x10) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_4" (pointer_expression "*(int **)(puVar10 + -0x10)" * (cast_expression "(int **)(puVar10 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar4 = *(code **)(iVar8 + 0x6c);" (assignment_expression "pcVar4 = *(code **)(iVar8 + 0x6c)" identifier = (pointer_expression "*(code **)(iVar8 + 0x6c)" * (cast_expression "(code **)(iVar8 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x6c)" ( (binary_expression "iVar8 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21d05e;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21d05e" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = (*pcVar4)();" (assignment_expression "iVar8 = (*pcVar4)()" identifier = (call_expression "(*pcVar4)()" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "param_4[0xc] = iVar8;" (assignment_expression "param_4[0xc] = iVar8" (subscript_expression "param_4[0xc]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "*(uint *)(puVar10 + -8) = uVar9;" (assignment_expression "*(uint *)(puVar10 + -8) = uVar9" (pointer_expression "*(uint *)(puVar10 + -8)" * (cast_expression "(uint *)(puVar10 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0xc) = param_4;" (assignment_expression "*(int **)(puVar10 + -0xc) = param_4" (pointer_expression "*(int **)(puVar10 + -0xc)" * (cast_expression "(int **)(puVar10 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0x10) = iVar8" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21caed;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21caed" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = FUN_0028b7d0();" (assignment_expression "uVar6 = FUN_0028b7d0()" identifier = (call_expression "FUN_0028b7d0()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_0021caf0;" goto statement_identifier ;) })))) (expression_statement "local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;" (assignment_expression "local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f" identifier = (binary_expression "CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f" (call_expression "CONCAT31(local_4c._1_3_,local_48[0xc])" identifier (argument_list "(local_4c._1_3_,local_48[0xc])" ( (field_expression "local_4c._1_3_" identifier . field_identifier) , (subscript_expression "local_48[0xc]" identifier [ number_literal ]) ))) & number_literal)) ;) (if_statement "if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }" if (parenthesized_expression "((local_48[0xc] & 0xf) == 10)" ( (binary_expression "(local_48[0xc] & 0xf) == 10" (parenthesized_expression "(local_48[0xc] & 0xf)" ( (binary_expression "local_48[0xc] & 0xf" (subscript_expression "local_48[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }" { (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x21c9f3;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x21c9f3" (pointer_expression "*(undefined4 *)(puVar10 + -4)" * (cast_expression "(undefined4 *)(puVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_0020ec80();" (assignment_expression "cVar5 = FUN_0020ec80()" identifier = (call_expression "FUN_0020ec80()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }" { (expression_statement "uVar9 = param_7[1];" (assignment_expression "uVar9 = param_7[1]" identifier = (subscript_expression "param_7[1]" identifier [ number_literal ])) ;) (expression_statement "local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;" (assignment_expression "local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" identifier = (binary_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" (parenthesized_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18)" ( (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal)) )) >> number_literal)) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = local_54;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_54" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x10) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_4" (pointer_expression "*(int **)(puVar10 + -0x10)" * (cast_expression "(int **)(puVar10 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21ca17;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21ca17" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_00290e20();" (assignment_expression "cVar5 = FUN_00290e20()" identifier = (call_expression "FUN_00290e20()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }" { (expression_statement "iVar8 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x18)" identifier = (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }" { (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x21d79b;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x21d79b" (pointer_expression "*(undefined4 *)(puVar10 + -4)" * (cast_expression "(undefined4 *)(puVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00210620();" (call_expression "FUN_00210620()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x18)" identifier = (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) })) (expression_statement "local_60 = *(int *)(iVar8 + 0x48) << 5;" (assignment_expression "local_60 = *(int *)(iVar8 + 0x48) << 5" identifier = (binary_expression "*(int *)(iVar8 + 0x48) << 5" (pointer_expression "*(int *)(iVar8 + 0x48)" * (cast_expression "(int *)(iVar8 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x48)" ( (binary_expression "iVar8 + 0x48" identifier + number_literal) )))) << number_literal)) ;) (expression_statement "*(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;" (assignment_expression "*(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1" (pointer_expression "*(int *)(iVar8 + 0x48)" * (cast_expression "(int *)(iVar8 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x48)" ( (binary_expression "iVar8 + 0x48" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar8 + 0x48) + 1" (pointer_expression "*(int *)(iVar8 + 0x48)" * (cast_expression "(int *)(iVar8 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x48)" ( (binary_expression "iVar8 + 0x48" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "iVar2 = *(int *)(iVar8 + 0x40);" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x40)" identifier = (pointer_expression "*(int *)(iVar8 + 0x40)" * (cast_expression "(int *)(iVar8 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x40)" ( (binary_expression "iVar8 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(iVar2 + 0xc);" (assignment_expression "iVar3 = *(int *)(iVar2 + 0xc)" identifier = (pointer_expression "*(int *)(iVar2 + 0xc)" * (cast_expression "(int *)(iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = iVar3 + 4;" (assignment_expression "iVar1 = iVar3 + 4" identifier = (binary_expression "iVar3 + 4" identifier + number_literal)) ;) (if_statement "if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x1c) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x1c) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x1c) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar2 + 0x1c)" * (cast_expression "(byte *)(iVar2 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }" { (expression_statement "*(int *)(puVar10 + -4) = iVar8;" (assignment_expression "*(int *)(puVar10 + -4) = iVar8" (pointer_expression "*(int *)(puVar10 + -4)" * (cast_expression "(int *)(puVar10 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x268827;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x268827" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x268827" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x231;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x231" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x230ce4" identifier + number_literal)) ;) (expression_statement "*(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;" (assignment_expression "*(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f" (pointer_expression "*(undefined **)(puVar10 + -0x14)" * (cast_expression "(undefined **)(puVar10 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (pointer_expression "&UNK_0021dd6f" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int *)(iVar2 + 0xc) = iVar1;" (assignment_expression "*(int *)(iVar2 + 0xc) = iVar1" (pointer_expression "*(int *)(iVar2 + 0xc)" * (cast_expression "(int *)(iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;" (assignment_expression "*(int *)(iVar2 + 0x10) = iVar1 >> 0x1f" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar1 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = param_3;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = param_3" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21ca6f" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_68 = FUN_00210ef0();" (assignment_expression "local_68 = FUN_00210ef0()" identifier = (call_expression "FUN_00210ef0()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_64 = *(undefined4 *)(iVar8 + 0x40);" (assignment_expression "local_64 = *(undefined4 *)(iVar8 + 0x40)" identifier = (pointer_expression "*(undefined4 *)(iVar8 + 0x40)" * (cast_expression "(undefined4 *)(iVar8 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x40)" ( (binary_expression "iVar8 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 1;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 1" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x1c) = iVar3;" (assignment_expression "*(int *)(puVar10 + -0x1c) = iVar3" (pointer_expression "*(int *)(puVar10 + -0x1c)" * (cast_expression "(int *)(puVar10 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x1c)" ( (binary_expression "puVar10 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x20) = local_64;" (assignment_expression "*(undefined4 *)(puVar10 + -0x20) = local_64" (pointer_expression "*(undefined4 *)(puVar10 + -0x20)" * (cast_expression "(undefined4 *)(puVar10 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x20)" ( (binary_expression "puVar10 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x24) = 0x3d;" (assignment_expression "*(undefined4 *)(puVar10 + -0x24) = 0x3d" (pointer_expression "*(undefined4 *)(puVar10 + -0x24)" * (cast_expression "(undefined4 *)(puVar10 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x24)" ( (binary_expression "puVar10 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar10 + -0x28) = local_54;" (assignment_expression "*(uint *)(puVar10 + -0x28) = local_54" (pointer_expression "*(uint *)(puVar10 + -0x28)" * (cast_expression "(uint *)(puVar10 + -0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x28)" ( (binary_expression "puVar10 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x2c) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x2c) = param_4" (pointer_expression "*(int **)(puVar10 + -0x2c)" * (cast_expression "(int **)(puVar10 + -0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x2c)" ( (binary_expression "puVar10 + -0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)(puVar10 + -0x30) = local_38;" (assignment_expression "*(undefined1 ***)(puVar10 + -0x30) = local_38" (pointer_expression "*(undefined1 ***)(puVar10 + -0x30)" * (cast_expression "(undefined1 ***)(puVar10 + -0x30)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar10 + -0x30)" ( (binary_expression "puVar10 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x34) = 0x21ca97;" (assignment_expression "*(undefined4 *)(puVar10 + -0x34) = 0x21ca97" (pointer_expression "*(undefined4 *)(puVar10 + -0x34)" * (cast_expression "(undefined4 *)(puVar10 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x34)" ( (binary_expression "puVar10 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002d70b0();" (call_expression "FUN_002d70b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined1 ***)(puVar10 + -8) = local_38;" (assignment_expression "*(undefined1 ***)(puVar10 + -8) = local_38" (pointer_expression "*(undefined1 ***)(puVar10 + -8)" * (cast_expression "(undefined1 ***)(puVar10 + -8)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = local_64;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = local_64" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = local_68;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = local_68" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21caaf;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21caaf" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000a9fc0();" (call_expression "FUN_000a9fc0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar10 + -8) = local_60;" (assignment_expression "*(int *)(puVar10 + -8) = local_60" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = local_54;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_54" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x10) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_4" (pointer_expression "*(int **)(puVar10 + -0x10)" * (cast_expression "(int **)(puVar10 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cac0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cac0" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002b24d0();" (call_expression "FUN_002b24d0()" identifier (argument_list "()" ( ))) ;) })) })) })) (expression_statement "local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');" (assignment_expression "local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n')" identifier = (call_expression "CONCAT31(local_54._1_3_,(char)local_4c == '\n')" identifier (argument_list "(local_54._1_3_,(char)local_4c == '\n')" ( (field_expression "local_54._1_3_" identifier . field_identifier) , (binary_expression "(char)local_4c == '\n'" (cast_expression "(char)local_4c" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\n'" ' escape_sequence ')) )))) ;) (if_statement "if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" if (parenthesized_expression "(local_40 < 0xfc)" ( (binary_expression "local_40 < 0xfc" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" { (expression_statement "(*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();" (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987)" ( (binary_expression "*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987" (binary_expression "*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x26709f + local_40 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x26709f + local_40 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x26709f + local_40 * 4)" ( (binary_expression "unaff_EDI + 0x26709f + local_40 * 4" (binary_expression "unaff_EDI + 0x26709f" identifier + number_literal) + (binary_expression "local_40 * 4" identifier * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar8 = param_4[1];" (assignment_expression "iVar8 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x231077" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21c9b7" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = gettext();" (assignment_expression "uVar7 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(uint *)(puVar10 + -8) = local_40;" (assignment_expression "*(uint *)(puVar10 + -8) = local_40" (pointer_expression "*(uint *)(puVar10 + -8)" * (cast_expression "(uint *)(puVar10 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0xc) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar8" (pointer_expression "*(int *)(puVar10 + -0xc)" * (cast_expression "(int *)(puVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = uVar7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = uVar7" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21c9c4" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0023b810();" (call_expression "FUN_0023b810()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }" else (compound_statement "{\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }" { (if_statement "if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }" if (parenthesized_expression "(uVar9 < (uint)param_4[0x2c])" ( (binary_expression "uVar9 < (uint)param_4[0x2c]" identifier < (cast_expression "(uint)param_4[0x2c]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0x2c]" identifier [ number_literal ]))) )) (compound_statement "{\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }" { (labeled_statement "LAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;" statement_identifier : (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x267e77" identifier + number_literal)) ;)) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x6a;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x6a" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x230e60" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21dc3a" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar9 = uVar9 - param_4[0x2c];" (assignment_expression "uVar9 = uVar9 - param_4[0x2c]" identifier = (binary_expression "uVar9 - param_4[0x2c]" identifier - (subscript_expression "param_4[0x2c]" identifier [ number_literal ]))) ;) (expression_statement "local_48 = (undefined1 *)param_4[0x30];" (assignment_expression "local_48 = (undefined1 *)param_4[0x30]" identifier = (cast_expression "(undefined1 *)param_4[0x30]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[0x30]" identifier [ number_literal ]))) ;) (if_statement "if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }" if (parenthesized_expression "((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9)" ( (binary_expression "(uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9" (call_expression "(uint)((int)local_48 - param_4[0x2f] >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)local_48 - param_4[0x2f] >> 2)" ( (binary_expression "(int)local_48 - param_4[0x2f] >> 2" (binary_expression "(int)local_48 - param_4[0x2f]" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) - (subscript_expression "param_4[0x2f]" identifier [ number_literal ])) >> number_literal) ))) <= identifier) )) (compound_statement "{\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }" { (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7" (pointer_expression "*(int *)(puVar10 + -8)" * (cast_expression "(int *)(puVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x267fa7" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x8ad;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x8ad" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" * (cast_expression "(undefined4 *)(puVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x230d0c" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21dc57;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21dc57" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);" (assignment_expression "iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4)" identifier = (pointer_expression "*(int *)(param_4[0x2f] + uVar9 * 4)" * (cast_expression "(int *)(param_4[0x2f] + uVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[0x2f] + uVar9 * 4)" ( (binary_expression "param_4[0x2f] + uVar9 * 4" (subscript_expression "param_4[0x2f]" identifier [ number_literal ]) + (binary_expression "uVar9 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar8 == 0) goto LAB_0021dc20;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0021dc20;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }" if (parenthesized_expression "((*(byte *)(iVar8 + 0x2a) & 0x10) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x2a) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2a) & 0x10)" ( (binary_expression "*(byte *)(iVar8 + 0x2a) & 0x10" (pointer_expression "*(byte *)(iVar8 + 0x2a)" * (cast_expression "(byte *)(iVar8 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2a)" ( (binary_expression "iVar8 + 0x2a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }" { (expression_statement "*(int *)(puVar10 + -0xc) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar8" (pointer_expression "*(int *)(puVar10 + -0xc)" * (cast_expression "(int *)(puVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = param_2;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = param_2" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cbc1" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = FUN_0034cd90();" (assignment_expression "iVar8 = FUN_0034cd90()" identifier = (call_expression "FUN_0034cd90()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }" if (parenthesized_expression "((*(byte *)(iVar8 + 0x28) & 0xf) == 10)" ( (binary_expression "(*(byte *)(iVar8 + 0x28) & 0xf) == 10" (parenthesized_expression "(*(byte *)(iVar8 + 0x28) & 0xf)" ( (binary_expression "*(byte *)(iVar8 + 0x28) & 0xf" (pointer_expression "*(byte *)(iVar8 + 0x28)" * (cast_expression "(byte *)(iVar8 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }" { (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x21d01b;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x21d01b" (pointer_expression "*(undefined4 *)(puVar10 + -4)" * (cast_expression "(undefined4 *)(puVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_0020ec80();" (assignment_expression "cVar5 = FUN_0020ec80()" identifier = (call_expression "FUN_0020ec80()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }" if (parenthesized_expression "((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1))" ( (binary_expression "(cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)" (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)(iVar8 + 0x18) == -1)" ( (binary_expression "*(int *)(iVar8 + 0x18) == -1" (pointer_expression "*(int *)(iVar8 + 0x18)" * (cast_expression "(int *)(iVar8 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }" { (expression_statement "*(int *)(puVar10 + -0x10) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0x10) = iVar8" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21d03f;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21d03f" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0021c420();" (call_expression "FUN_0021c420()" identifier (argument_list "()" ( ))) ;) })) })) (if_statement "if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" if (parenthesized_expression "(local_40 < 0xfc)" ( (binary_expression "local_40 < 0xfc" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" { (expression_statement "(*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();" (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987)" ( (binary_expression "*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987" (binary_expression "*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x2674ef + local_40 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x2674ef + local_40 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x2674ef + local_40 * 4)" ( (binary_expression "unaff_EDI + 0x2674ef + local_40 * 4" (binary_expression "unaff_EDI + 0x2674ef" identifier + number_literal) + (binary_expression "local_40 * 4" identifier * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "*(int *)(puVar10 + -0xc) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar8" (pointer_expression "*(int *)(puVar10 + -0xc)" * (cast_expression "(int *)(puVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)(puVar10 + -0x10) = local_38;" (assignment_expression "*(undefined1 ***)(puVar10 + -0x10) = local_38" (pointer_expression "*(undefined1 ***)(puVar10 + -0x10)" * (cast_expression "(undefined1 ***)(puVar10 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cfbf" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0034dd40();" (call_expression "FUN_0034dd40()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = param_4[1];" (assignment_expression "iVar8 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "local_48 = local_38[0];" (assignment_expression "local_48 = local_38[0]" identifier = (subscript_expression "local_38[0]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;" (assignment_expression "*(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7" (pointer_expression "*(int *)(puVar10 + -0x14)" * (cast_expression "(int *)(puVar10 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (binary_expression "unaff_EDI + 0x2310a7" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x21cfd7" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = gettext();" (assignment_expression "uVar7 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 **)(puVar10 + -8) = local_48;" (assignment_expression "*(undefined1 **)(puVar10 + -8) = local_48" (pointer_expression "*(undefined1 **)(puVar10 + -8)" * (cast_expression "(undefined1 **)(puVar10 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = local_40;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_40" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x10) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0x10) = iVar8" (pointer_expression "*(int *)(puVar10 + -0x10)" * (cast_expression "(int *)(puVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = uVar7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = uVar7" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x21cfe8" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0023b810();" (call_expression "FUN_0023b810()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) (if_statement "if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }" if (parenthesized_expression "(local_38[0] != local_30)" ( (binary_expression "local_38[0] != local_30" (subscript_expression "local_38[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }" { (expression_statement "*(undefined1 **)(puVar10 + -0x14) = local_38[0];" (assignment_expression "*(undefined1 **)(puVar10 + -0x14) = local_38[0]" (pointer_expression "*(undefined1 **)(puVar10 + -0x14)" * (cast_expression "(undefined1 **)(puVar10 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (subscript_expression "local_38[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x21d002;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x21d002" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) })) }))) }) (else_clause "else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }" else (compound_statement "{\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }" { (expression_statement "uVar9 = *param_7;" (assignment_expression "uVar9 = *param_7" identifier = (pointer_expression "*param_7" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "*(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (pointer_expression "*(uint *)(puVar10 + -0x14)" * (cast_expression "(uint *)(puVar10 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = param_5;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = param_5" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x1c) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x1c) = param_4" (pointer_expression "*(int **)(puVar10 + -0x1c)" * (cast_expression "(int **)(puVar10 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x1c)" ( (binary_expression "puVar10 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x20) = param_9;" (assignment_expression "*(undefined4 *)(puVar10 + -0x20) = param_9" (pointer_expression "*(undefined4 *)(puVar10 + -0x20)" * (cast_expression "(undefined4 *)(puVar10 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x20)" ( (binary_expression "puVar10 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;" (assignment_expression "*(undefined4 *)(puVar10 + -0x24) = 0x21cb5e" (pointer_expression "*(undefined4 *)(puVar10 + -0x24)" * (cast_expression "(undefined4 *)(puVar10 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x24)" ( (binary_expression "puVar10 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_002cd960();" (assignment_expression "cVar5 = FUN_002cd960()" identifier = (call_expression "FUN_002cd960()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 != '\0') goto LAB_0021c6ca;" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0021c6ca;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0021c770:\n      local_44 = local_44 + 1;" statement_identifier : (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" identifier = (binary_expression "local_44 + 1" identifier + number_literal)) ;)) (expression_statement "param_7 = param_7 + 3;" (assignment_expression "param_7 = param_7 + 3" identifier = (binary_expression "param_7 + 3" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" identifier = identifier) ;) }) while (parenthesized_expression "(param_8 != local_44)" ( (binary_expression "param_8 != local_44" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + 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 IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << 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 { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (subscript_expression IDENT [ LIT ])) ))) >> LIT) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + 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 IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) })) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + 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 IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (subscript_expression IDENT [ LIT ]) ))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (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 IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )) >> LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + 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 IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT >> 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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) )))) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) + IDENT) + LIT) )))) )) (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (subscript_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 IDENT + 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 IDENT = (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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + 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 IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (subscript_expression IDENT [ LIT ])) >> LIT) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + 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 IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) + IDENT) + LIT) )))) )) (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_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 IDENT + 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 IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) }))) (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) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_0021c670(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,\n                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,\n                 uint param_11,int param_12)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  char cVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  int aiStackY_a0 [9];\n  undefined1 auStack_6c [4];\n  undefined4 local_68;\n  undefined4 local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  uint local_54;\n  char local_4d;\n  uint local_4c;\n  undefined1 *local_48;\n  int local_44;\n  uint local_40;\n  undefined1 local_3a;\n  undefined1 *local_38 [2];\n  undefined1 local_30 [16];\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  puVar10 = auStack_6c;\n  local_4d = param_10;\n  if (param_6 == 9) {\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }\n  local_5c = unaff_EDI + 0x3ce14f;\n  local_3a = 0;\n  local_44 = 0;\n  local_58 = local_5c;\n  if (param_8 != 0) {\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0021c670(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,\n                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,\n                 uint param_11,int param_12)" (identifier "FUN_0021c670") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5,\n                 int param_6,uint *param_7,int param_8,undefined4 param_9,char param_10,\n                 uint param_11,int param_12)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "uint *param_7" (type_identifier "uint") (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) (, ",") (parameter_declaration "char param_10" (primitive_type "char") (identifier "param_10")) (, ",") (parameter_declaration "uint param_11" (type_identifier "uint") (identifier "param_11")) (, ",") (parameter_declaration "int param_12" (primitive_type "int") (identifier "param_12")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  char cVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  int aiStackY_a0 [9];\n  undefined1 auStack_6c [4];\n  undefined4 local_68;\n  undefined4 local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  uint local_54;\n  char local_4d;\n  uint local_4c;\n  undefined1 *local_48;\n  int local_44;\n  uint local_40;\n  undefined1 local_3a;\n  undefined1 *local_38 [2];\n  undefined1 local_30 [16];\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  puVar10 = auStack_6c;\n  local_4d = param_10;\n  if (param_6 == 9) {\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }\n  local_5c = unaff_EDI + 0x3ce14f;\n  local_3a = 0;\n  local_44 = 0;\n  local_58 = local_5c;\n  if (param_8 != 0) {\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "undefined1 *puVar10;" (type_identifier "undefined1") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined1 *puVar11;" (type_identifier "undefined1") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int aiStackY_a0 [9];" (primitive_type "int") (array_declarator "aiStackY_a0 [9]" (identifier "aiStackY_a0") ([ "[") (number_literal "9") (] "]")) (; ";")) (declaration "undefined1 auStack_6c [4];" (type_identifier "undefined1") (array_declarator "auStack_6c [4]" (identifier "auStack_6c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 local_68;" (type_identifier "undefined4") (identifier "local_68") (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "uint local_54;" (type_identifier "uint") (identifier "local_54") (; ";")) (declaration "char local_4d;" (primitive_type "char") (identifier "local_4d") (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "undefined1 *local_48;" (type_identifier "undefined1") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "undefined1 local_3a;" (type_identifier "undefined1") (identifier "local_3a") (; ";")) (declaration "undefined1 *local_38 [2];" (type_identifier "undefined1") (pointer_declarator "*local_38 [2]" (* "*") (array_declarator "local_38 [2]" (identifier "local_38") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_30 [16];" (type_identifier "undefined1") (array_declarator "local_30 [16]" (identifier "local_30") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" (identifier "FUN_00074f0a") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar10 = auStack_6c;" (assignment_expression "puVar10 = auStack_6c" (identifier "puVar10") (= "=") (identifier "auStack_6c")) (; ";")) (expression_statement "local_4d = param_10;" (assignment_expression "local_4d = param_10" (identifier "local_4d") (= "=") (identifier "param_10")) (; ";")) (if_statement "if (param_6 == 9) {\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }" (if "if") (parenthesized_expression "(param_6 == 9)" (( "(") (binary_expression "param_6 == 9" (identifier "param_6") (== "==") (number_literal "9")) () ")")) (compound_statement "{\n    iVar8 = param_4[1];\n    uVar7 = gettext(unaff_EDI + 0x233df7);\n    FUN_0023b810(uVar7,iVar8);\n    return;\n  }" ({ "{") (expression_statement "iVar8 = param_4[1];" (assignment_expression "iVar8 = param_4[1]" (identifier "iVar8") (= "=") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = gettext(unaff_EDI + 0x233df7);" (assignment_expression "uVar7 = gettext(unaff_EDI + 0x233df7)" (identifier "uVar7") (= "=") (call_expression "gettext(unaff_EDI + 0x233df7)" (identifier "gettext") (argument_list "(unaff_EDI + 0x233df7)" (( "(") (binary_expression "unaff_EDI + 0x233df7" (identifier "unaff_EDI") (+ "+") (number_literal "0x233df7")) () ")")))) (; ";")) (expression_statement "FUN_0023b810(uVar7,iVar8);" (call_expression "FUN_0023b810(uVar7,iVar8)" (identifier "FUN_0023b810") (argument_list "(uVar7,iVar8)" (( "(") (identifier "uVar7") (, ",") (identifier "iVar8") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_5c = unaff_EDI + 0x3ce14f;" (assignment_expression "local_5c = unaff_EDI + 0x3ce14f" (identifier "local_5c") (= "=") (binary_expression "unaff_EDI + 0x3ce14f" (identifier "unaff_EDI") (+ "+") (number_literal "0x3ce14f"))) (; ";")) (expression_statement "local_3a = 0;" (assignment_expression "local_3a = 0" (identifier "local_3a") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58 = local_5c;" (assignment_expression "local_58 = local_5c" (identifier "local_58") (= "=") (identifier "local_5c")) (; ";")) (if_statement "if (param_8 != 0) {\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }" (if "if") (parenthesized_expression "(param_8 != 0)" (( "(") (binary_expression "param_8 != 0" (identifier "param_8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);\n  }" ({ "{") (do_statement "do {\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    } while (param_8 != local_44);" (do "do") (compound_statement "{\n      puVar11 = puVar10;\n      if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }\nLAB_0021c770:\n      local_44 = local_44 + 1;\n      param_7 = param_7 + 3;\n      puVar10 = puVar11;\n    }" ({ "{") (expression_statement "puVar11 = puVar10;" (assignment_expression "puVar11 = puVar10" (identifier "puVar11") (= "=") (identifier "puVar10")) (; ";")) (if_statement "if (local_4d == '\0') {\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }\n      else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }" (if "if") (parenthesized_expression "(local_4d == '\0')" (( "(") (binary_expression "local_4d == '\0'" (identifier "local_4d") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_0021c6ca:\n        uVar9 = param_7[1];\n        local_40 = uVar9 >> 0x18;\n        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n        if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }\n      }" ({ "{") (labeled_statement "LAB_0021c6ca:\n        uVar9 = param_7[1];" (statement_identifier "LAB_0021c6ca") (: ":") (expression_statement "uVar9 = param_7[1];" (assignment_expression "uVar9 = param_7[1]" (identifier "uVar9") (= "=") (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]"))) (; ";"))) (expression_statement "local_40 = uVar9 >> 0x18;" (assignment_expression "local_40 = uVar9 >> 0x18" (identifier "local_40") (= "=") (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18"))) (; ";")) (expression_statement "uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;" (assignment_expression "uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" (identifier "uVar9") (= "=") (binary_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" (parenthesized_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18)" (( "(") (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8")) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18"))) () ")")) (>> ">>") (number_literal "8"))) (; ";")) (if_statement "if (uVar9 < param_11) {\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }\n        else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }" (if "if") (parenthesized_expression "(uVar9 < param_11)" (( "(") (binary_expression "uVar9 < param_11" (identifier "uVar9") (< "<") (identifier "param_11")) () ")")) (compound_statement "{\n          if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }\n          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);\n          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );\n          if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }\n          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;\n          if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }\n          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          iVar8 = param_4[1];\n          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;\n          uVar7 = gettext();\n          *(uint *)(puVar10 + -8) = local_40;\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined4 *)(puVar10 + -0x10) = uVar7;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;\n          FUN_0023b810();\n        }" ({ "{") (if_statement "if (param_12 == 0) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }" (if "if") (parenthesized_expression "(param_12 == 0)" (( "(") (binary_expression "param_12 == 0" (identifier "param_12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x4d;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;\n            FUN_002446e0();\n          }" ({ "{") (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77" (pointer_expression "*(int *)(puVar10 + -8)" (* "*") (cast_expression "(int *)(puVar10 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x267e77" (identifier "unaff_EDI") (+ "+") (number_literal "0x267e77"))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x4d;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x4d" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0x4d")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x230e60" (identifier "unaff_EDI") (+ "+") (number_literal "0x230e60"))) (; ";")) (expression_statement "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;" (assignment_expression "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc19" (pointer_expression "*(undefined **)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_0021dc19" (& "&") (identifier "UNK_0021dc19"))) (; ";")) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" (identifier "FUN_002446e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);" (assignment_expression "local_48 = (undefined1 *)(uVar9 * 0x10 + param_12)" (identifier "local_48") (= "=") (cast_expression "(undefined1 *)(uVar9 * 0x10 + param_12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar9 * 0x10 + param_12)" (( "(") (binary_expression "uVar9 * 0x10 + param_12" (binary_expression "uVar9 * 0x10" (identifier "uVar9") (* "*") (number_literal "0x10")) (+ "+") (identifier "param_12")) () ")")))) (; ";")) (expression_statement "uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                );" (assignment_expression "uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                )" (identifier "uVar6") (= "=") (call_expression "(uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                )" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(ushort)" (( "(") (identifier "ushort") () ")"))) (argument_list "(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8\n                                )" (( "(") (binary_expression "*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8" (binary_expression "*(ushort *)(local_48 + 0xe) << 8" (pointer_expression "*(ushort *)(local_48 + 0xe)" (* "*") (cast_expression "(ushort *)(local_48 + 0xe)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_48 + 0xe)" (( "(") (binary_expression "local_48 + 0xe" (identifier "local_48") (+ "+") (number_literal "0xe")) () ")")))) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*(ushort *)(local_48 + 0xe) >> 8" (pointer_expression "*(ushort *)(local_48 + 0xe)" (* "*") (cast_expression "(ushort *)(local_48 + 0xe)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_48 + 0xe)" (( "(") (binary_expression "local_48 + 0xe" (identifier "local_48") (+ "+") (number_literal "0xe")) () ")")))) (>> ">>") (number_literal "8"))) () ")")))) (; ";")) (if_statement "if (uVar6 < 0xff00) {\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }\n          else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" (if "if") (parenthesized_expression "(uVar6 < 0xff00)" (( "(") (binary_expression "uVar6 < 0xff00" (identifier "uVar6") (< "<") (number_literal "0xff00")) () ")")) (compound_statement "{\nLAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }\n          }" ({ "{") (labeled_statement "LAB_0021caf0:\n            if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }" (statement_identifier "LAB_0021caf0") (: ":") (if_statement "if (uVar6 != 0) {\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              local_4c = param_4[0xf];\n              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }\n              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }\n            }" ({ "{") (expression_statement "local_4c = param_4[0xf];" (assignment_expression "local_4c = param_4[0xf]" (identifier "local_4c") (= "=") (subscript_expression "param_4[0xf]" (identifier "param_4") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (if_statement "if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }" (if "if") (parenthesized_expression "((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6)" (( "(") (binary_expression "(uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6" (call_expression "(uint)((int)(local_4c - param_4[0xe]) >> 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)(local_4c - param_4[0xe]) >> 2)" (( "(") (binary_expression "(int)(local_4c - param_4[0xe]) >> 2" (cast_expression "(int)(local_4c - param_4[0xe])" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_4c - param_4[0xe])" (( "(") (binary_expression "local_4c - param_4[0xe]" (identifier "local_4c") (- "-") (subscript_expression "param_4[0xe]" (identifier "param_4") ([ "[") (number_literal "0xe") (] "]"))) () ")"))) (>> ">>") (number_literal "2")) () ")"))) (<= "<=") (identifier "uVar6")) () ")")) (compound_statement "{\n                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;\n                *(undefined4 *)(puVar10 + -0xc) = 0x50b;\n                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;\n                FUN_002446e0();\n              }" ({ "{") (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x26852b" (pointer_expression "*(int *)(puVar10 + -8)" (* "*") (cast_expression "(int *)(puVar10 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x26852b" (identifier "unaff_EDI") (+ "+") (number_literal "0x26852b"))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x50b;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x50b" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0x50b")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x230d0c" (identifier "unaff_EDI") (+ "+") (number_literal "0x230d0c"))) (; ";")) (expression_statement "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;" (assignment_expression "*(undefined **)(puVar10 + -0x14) = &UNK_0021dc74" (pointer_expression "*(undefined **)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_0021dc74" (& "&") (identifier "UNK_0021dc74"))) (; ";")) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" (identifier "FUN_002446e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }" (if "if") (parenthesized_expression "(*(int *)(param_4[0xe] + uVar6 * 4) == 0)" (( "(") (binary_expression "*(int *)(param_4[0xe] + uVar6 * 4) == 0" (pointer_expression "*(int *)(param_4[0xe] + uVar6 * 4)" (* "*") (cast_expression "(int *)(param_4[0xe] + uVar6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4[0xe] + uVar6 * 4)" (( "(") (binary_expression "param_4[0xe] + uVar6 * 4" (subscript_expression "param_4[0xe]" (identifier "param_4") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                *(uint *)(puVar10 + -8) = uVar6;\n                *(int **)(puVar10 + -0xc) = param_4;\n                *(undefined4 *)(puVar10 + -0x10) = param_2;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;\n                cVar5 = FUN_0034cd20();\n                if (cVar5 == '\0') goto LAB_0021c770;\n              }" ({ "{") (expression_statement "*(uint *)(puVar10 + -8) = uVar6;" (assignment_expression "*(uint *)(puVar10 + -8) = uVar6" (pointer_expression "*(uint *)(puVar10 + -8)" (* "*") (cast_expression "(uint *)(puVar10 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*(int **)(puVar10 + -0xc) = param_4;" (assignment_expression "*(int **)(puVar10 + -0xc) = param_4" (pointer_expression "*(int **)(puVar10 + -0xc)" (* "*") (cast_expression "(int **)(puVar10 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = param_2;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = param_2" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cb30;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cb30" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21cb30")) (; ";")) (expression_statement "cVar5 = FUN_0034cd20();" (assignment_expression "cVar5 = FUN_0034cd20()" (identifier "cVar5") (= "=") (call_expression "FUN_0034cd20()" (identifier "FUN_0034cd20") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar5 == '\0') goto LAB_0021c770;" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0021c770;" (goto "goto") (statement_identifier "LAB_0021c770") (; ";"))) (} "}"))) (} "}")))) (} "}")) (else_clause "else if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" (else "else") (if_statement "if (uVar6 == 0xffff) {\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" (if "if") (parenthesized_expression "(uVar6 == 0xffff)" (( "(") (binary_expression "uVar6 == 0xffff" (identifier "uVar6") (== "==") (number_literal "0xffff")) () ")")) (compound_statement "{\n            iVar8 = param_4[0xc];\n            if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }\n            *(uint *)(puVar10 + -8) = uVar9;\n            *(int **)(puVar10 + -0xc) = param_4;\n            *(int *)(puVar10 + -0x10) = iVar8;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;\n            uVar6 = FUN_0028b7d0();\n            goto LAB_0021caf0;\n          }" ({ "{") (expression_statement "iVar8 = param_4[0xc];" (assignment_expression "iVar8 = param_4[0xc]" (identifier "iVar8") (= "=") (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (if_statement "if (iVar8 == 0) {\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar8 = *param_4;\n              *(int **)(puVar10 + -0x10) = param_4;\n              pcVar4 = *(code **)(iVar8 + 0x6c);\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;\n              iVar8 = (*pcVar4)();\n              param_4[0xc] = iVar8;\n            }" ({ "{") (expression_statement "iVar8 = *param_4;" (assignment_expression "iVar8 = *param_4" (identifier "iVar8") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (expression_statement "*(int **)(puVar10 + -0x10) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_4" (pointer_expression "*(int **)(puVar10 + -0x10)" (* "*") (cast_expression "(int **)(puVar10 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "pcVar4 = *(code **)(iVar8 + 0x6c);" (assignment_expression "pcVar4 = *(code **)(iVar8 + 0x6c)" (identifier "pcVar4") (= "=") (pointer_expression "*(code **)(iVar8 + 0x6c)" (* "*") (cast_expression "(code **)(iVar8 + 0x6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x6c)" (( "(") (binary_expression "iVar8 + 0x6c" (identifier "iVar8") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21d05e;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21d05e" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21d05e")) (; ";")) (expression_statement "iVar8 = (*pcVar4)();" (assignment_expression "iVar8 = (*pcVar4)()" (identifier "iVar8") (= "=") (call_expression "(*pcVar4)()" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "param_4[0xc] = iVar8;" (assignment_expression "param_4[0xc] = iVar8" (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (expression_statement "*(uint *)(puVar10 + -8) = uVar9;" (assignment_expression "*(uint *)(puVar10 + -8) = uVar9" (pointer_expression "*(uint *)(puVar10 + -8)" (* "*") (cast_expression "(uint *)(puVar10 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(int **)(puVar10 + -0xc) = param_4;" (assignment_expression "*(int **)(puVar10 + -0xc) = param_4" (pointer_expression "*(int **)(puVar10 + -0xc)" (* "*") (cast_expression "(int **)(puVar10 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0x10) = iVar8" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21caed;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21caed" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21caed")) (; ";")) (expression_statement "uVar6 = FUN_0028b7d0();" (assignment_expression "uVar6 = FUN_0028b7d0()" (identifier "uVar6") (= "=") (call_expression "FUN_0028b7d0()" (identifier "FUN_0028b7d0") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_0021caf0;" (goto "goto") (statement_identifier "LAB_0021caf0") (; ";")) (} "}"))))) (expression_statement "local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;" (assignment_expression "local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f" (identifier "local_4c") (= "=") (binary_expression "CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f" (call_expression "CONCAT31(local_4c._1_3_,local_48[0xc])" (identifier "CONCAT31") (argument_list "(local_4c._1_3_,local_48[0xc])" (( "(") (field_expression "local_4c._1_3_" (identifier "local_4c") (. ".") (field_identifier "_1_3_")) (, ",") (subscript_expression "local_48[0xc]" (identifier "local_48") ([ "[") (number_literal "0xc") (] "]")) () ")"))) (& "&") (number_literal "0xffffff0f"))) (; ";")) (if_statement "if ((local_48[0xc] & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }" (if "if") (parenthesized_expression "((local_48[0xc] & 0xf) == 10)" (( "(") (binary_expression "(local_48[0xc] & 0xf) == 10" (parenthesized_expression "(local_48[0xc] & 0xf)" (( "(") (binary_expression "local_48[0xc] & 0xf" (subscript_expression "local_48[0xc]" (identifier "local_48") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "0xf")) () ")")) (== "==") (number_literal "10")) () ")")) (compound_statement "{\n            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;\n            cVar5 = FUN_0020ec80();\n            if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }\n          }" ({ "{") (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x21c9f3;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x21c9f3" (pointer_expression "*(undefined4 *)(puVar10 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -4)" (( "(") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0x21c9f3")) (; ";")) (expression_statement "cVar5 = FUN_0020ec80();" (assignment_expression "cVar5 = FUN_0020ec80()" (identifier "cVar5") (= "=") (call_expression "FUN_0020ec80()" (identifier "FUN_0020ec80") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar5 != '\0') {\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              uVar9 = param_7[1];\n              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;\n              *(uint *)(puVar10 + -0xc) = local_54;\n              *(int **)(puVar10 + -0x10) = param_4;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;\n              cVar5 = FUN_00290e20();\n              if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }\n            }" ({ "{") (expression_statement "uVar9 = param_7[1];" (assignment_expression "uVar9 = param_7[1]" (identifier "uVar9") (= "=") (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;" (assignment_expression "local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" (identifier "local_54") (= "=") (binary_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8" (parenthesized_expression "((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18)" (( "(") (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "(uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8")) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18"))) () ")")) (>> ">>") (number_literal "8"))) (; ";")) (expression_statement "*(uint *)(puVar10 + -0xc) = local_54;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_54" (pointer_expression "*(uint *)(puVar10 + -0xc)" (* "*") (cast_expression "(uint *)(puVar10 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_54")) (; ";")) (expression_statement "*(int **)(puVar10 + -0x10) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_4" (pointer_expression "*(int **)(puVar10 + -0x10)" (* "*") (cast_expression "(int **)(puVar10 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21ca17;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21ca17" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21ca17")) (; ";")) (expression_statement "cVar5 = FUN_00290e20();" (assignment_expression "cVar5 = FUN_00290e20()" (identifier "cVar5") (= "=") (call_expression "FUN_00290e20()" (identifier "FUN_00290e20") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar5 == '\0') {\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                iVar8 = *(int *)(param_1 + 0x18);\n                if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }\n                local_60 = *(int *)(iVar8 + 0x48) << 5;\n                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;\n                iVar2 = *(int *)(iVar8 + 0x40);\n                iVar3 = *(int *)(iVar2 + 0xc);\n                iVar1 = iVar3 + 4;\n                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }\n                *(int *)(iVar2 + 0xc) = iVar1;\n                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;\n                *(undefined4 *)(puVar10 + -0x10) = param_3;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;\n                local_68 = FUN_00210ef0();\n                local_64 = *(undefined4 *)(iVar8 + 0x40);\n                *(undefined4 *)(puVar10 + -0xc) = 0;\n                *(undefined4 *)(puVar10 + -0x10) = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 1;\n                *(undefined4 *)(puVar10 + -0x18) = 0;\n                *(int *)(puVar10 + -0x1c) = iVar3;\n                *(undefined4 *)(puVar10 + -0x20) = local_64;\n                *(undefined4 *)(puVar10 + -0x24) = 0x3d;\n                *(uint *)(puVar10 + -0x28) = local_54;\n                *(int **)(puVar10 + -0x2c) = param_4;\n                *(undefined1 ***)(puVar10 + -0x30) = local_38;\n                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;\n                FUN_002d70b0();\n                *(undefined1 ***)(puVar10 + -8) = local_38;\n                *(undefined4 *)(puVar10 + -0xc) = local_64;\n                *(undefined4 *)(puVar10 + -0x10) = local_68;\n                local_20 = 0;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;\n                FUN_000a9fc0();\n                *(int *)(puVar10 + -8) = local_60;\n                *(uint *)(puVar10 + -0xc) = local_54;\n                *(int **)(puVar10 + -0x10) = param_4;\n                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;\n                FUN_002b24d0();\n              }" ({ "{") (expression_statement "iVar8 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x18)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (iVar8 == 0) {\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;\n                  FUN_00210620();\n                  iVar8 = *(int *)(param_1 + 0x18);\n                }" ({ "{") (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x21d79b;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x21d79b" (pointer_expression "*(undefined4 *)(puVar10 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -4)" (( "(") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0x21d79b")) (; ";")) (expression_statement "FUN_00210620();" (call_expression "FUN_00210620()" (identifier "FUN_00210620") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x18)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_60 = *(int *)(iVar8 + 0x48) << 5;" (assignment_expression "local_60 = *(int *)(iVar8 + 0x48) << 5" (identifier "local_60") (= "=") (binary_expression "*(int *)(iVar8 + 0x48) << 5" (pointer_expression "*(int *)(iVar8 + 0x48)" (* "*") (cast_expression "(int *)(iVar8 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x48)" (( "(") (binary_expression "iVar8 + 0x48" (identifier "iVar8") (+ "+") (number_literal "0x48")) () ")")))) (<< "<<") (number_literal "5"))) (; ";")) (expression_statement "*(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;" (assignment_expression "*(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1" (pointer_expression "*(int *)(iVar8 + 0x48)" (* "*") (cast_expression "(int *)(iVar8 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x48)" (( "(") (binary_expression "iVar8 + 0x48" (identifier "iVar8") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (binary_expression "*(int *)(iVar8 + 0x48) + 1" (pointer_expression "*(int *)(iVar8 + 0x48)" (* "*") (cast_expression "(int *)(iVar8 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x48)" (( "(") (binary_expression "iVar8 + 0x48" (identifier "iVar8") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar2 = *(int *)(iVar8 + 0x40);" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x40)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar8 + 0x40)" (* "*") (cast_expression "(int *)(iVar8 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x40)" (( "(") (binary_expression "iVar8 + 0x40" (identifier "iVar8") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "iVar3 = *(int *)(iVar2 + 0xc);" (assignment_expression "iVar3 = *(int *)(iVar2 + 0xc)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 0xc)" (* "*") (cast_expression "(int *)(iVar2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar1 = iVar3 + 4;" (assignment_expression "iVar1 = iVar3 + 4" (identifier "iVar1") (= "=") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }" (if "if") (parenthesized_expression "((*(byte *)(iVar2 + 0x1c) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x1c) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x1c) & 2)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar2 + 0x1c)" (* "*") (cast_expression "(byte *)(iVar2 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1c)" (( "(") (binary_expression "iVar2 + 0x1c" (identifier "iVar2") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  *(int *)(puVar10 + -4) = iVar8;\n                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;\n                  *(undefined4 *)(puVar10 + -0xc) = 0x231;\n                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;\n                    \n                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;\n                  FUN_002446e0();\n                }" ({ "{") (expression_statement "*(int *)(puVar10 + -4) = iVar8;" (assignment_expression "*(int *)(puVar10 + -4) = iVar8" (pointer_expression "*(int *)(puVar10 + -4)" (* "*") (cast_expression "(int *)(puVar10 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -4)" (( "(") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x268827;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x268827" (pointer_expression "*(int *)(puVar10 + -8)" (* "*") (cast_expression "(int *)(puVar10 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x268827" (identifier "unaff_EDI") (+ "+") (number_literal "0x268827"))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x231;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x231" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0x231")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x230ce4" (identifier "unaff_EDI") (+ "+") (number_literal "0x230ce4"))) (; ";")) (expression_statement "*(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;" (assignment_expression "*(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f" (pointer_expression "*(undefined **)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_0021dd6f" (& "&") (identifier "UNK_0021dd6f"))) (; ";")) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" (identifier "FUN_002446e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar2 + 0xc) = iVar1;" (assignment_expression "*(int *)(iVar2 + 0xc) = iVar1" (pointer_expression "*(int *)(iVar2 + 0xc)" (* "*") (cast_expression "(int *)(iVar2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "*(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;" (assignment_expression "*(int *)(iVar2 + 0x10) = iVar1 >> 0x1f" (pointer_expression "*(int *)(iVar2 + 0x10)" (* "*") (cast_expression "(int *)(iVar2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "iVar1 >> 0x1f" (identifier "iVar1") (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = param_3;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = param_3" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21ca6f" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21ca6f")) (; ";")) (expression_statement "local_68 = FUN_00210ef0();" (assignment_expression "local_68 = FUN_00210ef0()" (identifier "local_68") (= "=") (call_expression "FUN_00210ef0()" (identifier "FUN_00210ef0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_64 = *(undefined4 *)(iVar8 + 0x40);" (assignment_expression "local_64 = *(undefined4 *)(iVar8 + 0x40)" (identifier "local_64") (= "=") (pointer_expression "*(undefined4 *)(iVar8 + 0x40)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x40)" (( "(") (binary_expression "iVar8 + 0x40" (identifier "iVar8") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 1;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 1" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x18)" (( "(") (binary_expression "puVar10 + -0x18" (identifier "puVar10") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x1c) = iVar3;" (assignment_expression "*(int *)(puVar10 + -0x1c) = iVar3" (pointer_expression "*(int *)(puVar10 + -0x1c)" (* "*") (cast_expression "(int *)(puVar10 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x1c)" (( "(") (binary_expression "puVar10 + -0x1c" (identifier "puVar10") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x20) = local_64;" (assignment_expression "*(undefined4 *)(puVar10 + -0x20) = local_64" (pointer_expression "*(undefined4 *)(puVar10 + -0x20)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x20)" (( "(") (binary_expression "puVar10 + -0x20" (identifier "puVar10") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x24) = 0x3d;" (assignment_expression "*(undefined4 *)(puVar10 + -0x24) = 0x3d" (pointer_expression "*(undefined4 *)(puVar10 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x24)" (( "(") (binary_expression "puVar10 + -0x24" (identifier "puVar10") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x3d")) (; ";")) (expression_statement "*(uint *)(puVar10 + -0x28) = local_54;" (assignment_expression "*(uint *)(puVar10 + -0x28) = local_54" (pointer_expression "*(uint *)(puVar10 + -0x28)" (* "*") (cast_expression "(uint *)(puVar10 + -0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x28)" (( "(") (binary_expression "puVar10 + -0x28" (identifier "puVar10") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "local_54")) (; ";")) (expression_statement "*(int **)(puVar10 + -0x2c) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x2c) = param_4" (pointer_expression "*(int **)(puVar10 + -0x2c)" (* "*") (cast_expression "(int **)(puVar10 + -0x2c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x2c)" (( "(") (binary_expression "puVar10 + -0x2c" (identifier "puVar10") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined1 ***)(puVar10 + -0x30) = local_38;" (assignment_expression "*(undefined1 ***)(puVar10 + -0x30) = local_38" (pointer_expression "*(undefined1 ***)(puVar10 + -0x30)" (* "*") (cast_expression "(undefined1 ***)(puVar10 + -0x30)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar10 + -0x30)" (( "(") (binary_expression "puVar10 + -0x30" (identifier "puVar10") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "local_38")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x34) = 0x21ca97;" (assignment_expression "*(undefined4 *)(puVar10 + -0x34) = 0x21ca97" (pointer_expression "*(undefined4 *)(puVar10 + -0x34)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x34)" (( "(") (binary_expression "puVar10 + -0x34" (identifier "puVar10") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (number_literal "0x21ca97")) (; ";")) (expression_statement "FUN_002d70b0();" (call_expression "FUN_002d70b0()" (identifier "FUN_002d70b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined1 ***)(puVar10 + -8) = local_38;" (assignment_expression "*(undefined1 ***)(puVar10 + -8) = local_38" (pointer_expression "*(undefined1 ***)(puVar10 + -8)" (* "*") (cast_expression "(undefined1 ***)(puVar10 + -8)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "local_38")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = local_64;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = local_64" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = local_68;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = local_68" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_68")) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21caaf;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21caaf" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21caaf")) (; ";")) (expression_statement "FUN_000a9fc0();" (call_expression "FUN_000a9fc0()" (identifier "FUN_000a9fc0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar10 + -8) = local_60;" (assignment_expression "*(int *)(puVar10 + -8) = local_60" (pointer_expression "*(int *)(puVar10 + -8)" (* "*") (cast_expression "(int *)(puVar10 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (expression_statement "*(uint *)(puVar10 + -0xc) = local_54;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_54" (pointer_expression "*(uint *)(puVar10 + -0xc)" (* "*") (cast_expression "(uint *)(puVar10 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_54")) (; ";")) (expression_statement "*(int **)(puVar10 + -0x10) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_4" (pointer_expression "*(int **)(puVar10 + -0x10)" (* "*") (cast_expression "(int **)(puVar10 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cac0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cac0" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21cac0")) (; ";")) (expression_statement "FUN_002b24d0();" (call_expression "FUN_002b24d0()" (identifier "FUN_002b24d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');" (assignment_expression "local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n')" (identifier "local_54") (= "=") (call_expression "CONCAT31(local_54._1_3_,(char)local_4c == '\n')" (identifier "CONCAT31") (argument_list "(local_54._1_3_,(char)local_4c == '\n')" (( "(") (field_expression "local_54._1_3_" (identifier "local_54") (. ".") (field_identifier "_1_3_")) (, ",") (binary_expression "(char)local_4c == '\n'" (cast_expression "(char)local_4c" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_4c")) (== "==") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'"))) () ")")))) (; ";")) (if_statement "if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" (if "if") (parenthesized_expression "(local_40 < 0xfc)" (( "(") (binary_expression "local_40 < 0xfc" (identifier "local_40") (< "<") (number_literal "0xfc")) () ")")) (compound_statement "{\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" ({ "{") (expression_statement "(*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();" (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))" (( "(") (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987)" (* "*") (cast_expression "(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987)" (( "(") (binary_expression "*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987" (binary_expression "*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x26709f + local_40 * 4)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x26709f + local_40 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x26709f + local_40 * 4)" (( "(") (binary_expression "unaff_EDI + 0x26709f + local_40 * 4" (binary_expression "unaff_EDI + 0x26709f" (identifier "unaff_EDI") (+ "+") (number_literal "0x26709f")) (+ "+") (binary_expression "local_40 * 4" (identifier "local_40") (* "*") (number_literal "4"))) () ")")))) (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0x3cd987")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar8 = param_4[1];" (assignment_expression "iVar8 = param_4[1]" (identifier "iVar8") (= "=") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x231077" (identifier "unaff_EDI") (+ "+") (number_literal "0x231077"))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21c9b7" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21c9b7")) (; ";")) (expression_statement "uVar7 = gettext();" (assignment_expression "uVar7 = gettext()" (identifier "uVar7") (= "=") (call_expression "gettext()" (identifier "gettext") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(uint *)(puVar10 + -8) = local_40;" (assignment_expression "*(uint *)(puVar10 + -8) = local_40" (pointer_expression "*(uint *)(puVar10 + -8)" (* "*") (cast_expression "(uint *)(puVar10 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "*(int *)(puVar10 + -0xc) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar8" (pointer_expression "*(int *)(puVar10 + -0xc)" (* "*") (cast_expression "(int *)(puVar10 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = uVar7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = uVar7" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21c9c4" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21c9c4")) (; ";")) (expression_statement "FUN_0023b810();" (call_expression "FUN_0023b810()" (identifier "FUN_0023b810") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }" (else "else") (compound_statement "{\n          if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }\n          uVar9 = uVar9 - param_4[0x2c];\n          local_48 = (undefined1 *)param_4[0x30];\n          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }\n          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);\n          if (iVar8 == 0) goto LAB_0021dc20;\n          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }\n          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }\n          if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }\n          *(int *)(puVar10 + -0xc) = iVar8;\n          *(undefined1 ***)(puVar10 + -0x10) = local_38;\n          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;\n          FUN_0034dd40();\n          iVar8 = param_4[1];\n          local_48 = local_38[0];\n          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;\n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;\n          uVar7 = gettext();\n          *(undefined1 **)(puVar10 + -8) = local_48;\n          *(uint *)(puVar10 + -0xc) = local_40;\n          *(int *)(puVar10 + -0x10) = iVar8;\n          *(undefined4 *)(puVar10 + -0x14) = uVar7;\n                    \n          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;\n          FUN_0023b810();\n          puVar11 = puVar10 + -4;\n          if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }\n        }" ({ "{") (if_statement "if (uVar9 < (uint)param_4[0x2c]) {\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }" (if "if") (parenthesized_expression "(uVar9 < (uint)param_4[0x2c])" (( "(") (binary_expression "uVar9 < (uint)param_4[0x2c]" (identifier "uVar9") (< "<") (cast_expression "(uint)param_4[0x2c]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_4[0x2c]" (identifier "param_4") ([ "[") (number_literal "0x2c") (] "]")))) () ")")) (compound_statement "{\nLAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;\n            *(undefined4 *)(puVar10 + -0xc) = 0x6a;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;\n            FUN_002446e0();\n          }" ({ "{") (labeled_statement "LAB_0021dc20:\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;" (statement_identifier "LAB_0021dc20") (: ":") (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x267e77" (pointer_expression "*(int *)(puVar10 + -8)" (* "*") (cast_expression "(int *)(puVar10 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x267e77" (identifier "unaff_EDI") (+ "+") (number_literal "0x267e77"))) (; ";"))) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x6a;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x6a" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0x6a")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x230e60" (identifier "unaff_EDI") (+ "+") (number_literal "0x230e60"))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21dc3a" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21dc3a")) (; ";")) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" (identifier "FUN_002446e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar9 = uVar9 - param_4[0x2c];" (assignment_expression "uVar9 = uVar9 - param_4[0x2c]" (identifier "uVar9") (= "=") (binary_expression "uVar9 - param_4[0x2c]" (identifier "uVar9") (- "-") (subscript_expression "param_4[0x2c]" (identifier "param_4") ([ "[") (number_literal "0x2c") (] "]")))) (; ";")) (expression_statement "local_48 = (undefined1 *)param_4[0x30];" (assignment_expression "local_48 = (undefined1 *)param_4[0x30]" (identifier "local_48") (= "=") (cast_expression "(undefined1 *)param_4[0x30]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[0x30]" (identifier "param_4") ([ "[") (number_literal "0x30") (] "]")))) (; ";")) (if_statement "if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }" (if "if") (parenthesized_expression "((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9)" (( "(") (binary_expression "(uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9" (call_expression "(uint)((int)local_48 - param_4[0x2f] >> 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)local_48 - param_4[0x2f] >> 2)" (( "(") (binary_expression "(int)local_48 - param_4[0x2f] >> 2" (binary_expression "(int)local_48 - param_4[0x2f]" (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (- "-") (subscript_expression "param_4[0x2f]" (identifier "param_4") ([ "[") (number_literal "0x2f") (] "]"))) (>> ">>") (number_literal "2")) () ")"))) (<= "<=") (identifier "uVar9")) () ")")) (compound_statement "{\n            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;\n            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;\n            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;\n                    \n            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;\n            FUN_002446e0();\n          }" ({ "{") (expression_statement "*(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;" (assignment_expression "*(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7" (pointer_expression "*(int *)(puVar10 + -8)" (* "*") (cast_expression "(int *)(puVar10 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x267fa7" (identifier "unaff_EDI") (+ "+") (number_literal "0x267fa7"))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0xc) = 0x8ad;" (assignment_expression "*(undefined4 *)(puVar10 + -0xc) = 0x8ad" (pointer_expression "*(undefined4 *)(puVar10 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0x8ad")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;" (assignment_expression "*(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x230d0c" (identifier "unaff_EDI") (+ "+") (number_literal "0x230d0c"))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21dc57;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21dc57" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21dc57")) (; ";")) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" (identifier "FUN_002446e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);" (assignment_expression "iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_4[0x2f] + uVar9 * 4)" (* "*") (cast_expression "(int *)(param_4[0x2f] + uVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4[0x2f] + uVar9 * 4)" (( "(") (binary_expression "param_4[0x2f] + uVar9 * 4" (subscript_expression "param_4[0x2f]" (identifier "param_4") ([ "[") (number_literal "0x2f") (] "]")) (+ "+") (binary_expression "uVar9 * 4" (identifier "uVar9") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (iVar8 == 0) goto LAB_0021dc20;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0021dc20;" (goto "goto") (statement_identifier "LAB_0021dc20") (; ";"))) (if_statement "if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }" (if "if") (parenthesized_expression "((*(byte *)(iVar8 + 0x2a) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x2a) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2a) & 0x10)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x2a) & 0x10" (pointer_expression "*(byte *)(iVar8 + 0x2a)" (* "*") (cast_expression "(byte *)(iVar8 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x2a)" (( "(") (binary_expression "iVar8 + 0x2a" (identifier "iVar8") (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(int *)(puVar10 + -0xc) = iVar8;\n            *(undefined4 *)(puVar10 + -0x10) = param_2;\n            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;\n            iVar8 = FUN_0034cd90();\n          }" ({ "{") (expression_statement "*(int *)(puVar10 + -0xc) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar8" (pointer_expression "*(int *)(puVar10 + -0xc)" (* "*") (cast_expression "(int *)(puVar10 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = param_2;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = param_2" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cbc1" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21cbc1")) (; ";")) (expression_statement "iVar8 = FUN_0034cd90();" (assignment_expression "iVar8 = FUN_0034cd90()" (identifier "iVar8") (= "=") (call_expression "FUN_0034cd90()" (identifier "FUN_0034cd90") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }" (if "if") (parenthesized_expression "((*(byte *)(iVar8 + 0x28) & 0xf) == 10)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x28) & 0xf) == 10" (parenthesized_expression "(*(byte *)(iVar8 + 0x28) & 0xf)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x28) & 0xf" (pointer_expression "*(byte *)(iVar8 + 0x28)" (* "*") (cast_expression "(byte *)(iVar8 + 0x28)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x28)" (( "(") (binary_expression "iVar8 + 0x28" (identifier "iVar8") (+ "+") (number_literal "0x28")) () ")")))) (& "&") (number_literal "0xf")) () ")")) (== "==") (number_literal "10")) () ")")) (compound_statement "{\n            *(undefined4 *)(puVar10 + -4) = 0x21d01b;\n            cVar5 = FUN_0020ec80();\n            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }\n          }" ({ "{") (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x21d01b;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x21d01b" (pointer_expression "*(undefined4 *)(puVar10 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -4)" (( "(") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0x21d01b")) (; ";")) (expression_statement "cVar5 = FUN_0020ec80();" (assignment_expression "cVar5 = FUN_0020ec80()" (identifier "cVar5") (= "=") (call_expression "FUN_0020ec80()" (identifier "FUN_0020ec80") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }" (if "if") (parenthesized_expression "((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1))" (( "(") (binary_expression "(cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)" (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar8 + 0x18) == -1)" (( "(") (binary_expression "*(int *)(iVar8 + 0x18) == -1" (pointer_expression "*(int *)(iVar8 + 0x18)" (* "*") (cast_expression "(int *)(iVar8 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x18)" (( "(") (binary_expression "iVar8 + 0x18" (identifier "iVar8") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n              *(int *)(puVar10 + -0x10) = iVar8;\n              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;\n              FUN_0021c420();\n            }" ({ "{") (expression_statement "*(int *)(puVar10 + -0x10) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0x10) = iVar8" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21d03f;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21d03f" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21d03f")) (; ";")) (expression_statement "FUN_0021c420();" (call_expression "FUN_0021c420()" (identifier "FUN_0021c420") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_40 < 0xfc) {\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" (if "if") (parenthesized_expression "(local_40 < 0xfc)" (( "(") (binary_expression "local_40 < 0xfc" (identifier "local_40") (< "<") (number_literal "0xfc")) () ")")) (compound_statement "{\n                    \n                    \n            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();\n            return;\n          }" ({ "{") (expression_statement "(*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();" (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))" (( "(") (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987)" (* "*") (cast_expression "(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987)" (( "(") (binary_expression "*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987" (binary_expression "*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x2674ef + local_40 * 4)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x2674ef + local_40 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x2674ef + local_40 * 4)" (( "(") (binary_expression "unaff_EDI + 0x2674ef + local_40 * 4" (binary_expression "unaff_EDI + 0x2674ef" (identifier "unaff_EDI") (+ "+") (number_literal "0x2674ef")) (+ "+") (binary_expression "local_40 * 4" (identifier "local_40") (* "*") (number_literal "4"))) () ")")))) (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0x3cd987")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(int *)(puVar10 + -0xc) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0xc) = iVar8" (pointer_expression "*(int *)(puVar10 + -0xc)" (* "*") (cast_expression "(int *)(puVar10 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(undefined1 ***)(puVar10 + -0x10) = local_38;" (assignment_expression "*(undefined1 ***)(puVar10 + -0x10) = local_38" (pointer_expression "*(undefined1 ***)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined1 ***)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_38")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x21cfbf" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21cfbf")) (; ";")) (expression_statement "FUN_0034dd40();" (call_expression "FUN_0034dd40()" (identifier "FUN_0034dd40") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar8 = param_4[1];" (assignment_expression "iVar8 = param_4[1]" (identifier "iVar8") (= "=") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_48 = local_38[0];" (assignment_expression "local_48 = local_38[0]" (identifier "local_48") (= "=") (subscript_expression "local_38[0]" (identifier "local_38") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;" (assignment_expression "*(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7" (pointer_expression "*(int *)(puVar10 + -0x14)" (* "*") (cast_expression "(int *)(puVar10 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x2310a7" (identifier "unaff_EDI") (+ "+") (number_literal "0x2310a7"))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x21cfd7" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x18)" (( "(") (binary_expression "puVar10 + -0x18" (identifier "puVar10") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x21cfd7")) (; ";")) (expression_statement "uVar7 = gettext();" (assignment_expression "uVar7 = gettext()" (identifier "uVar7") (= "=") (call_expression "gettext()" (identifier "gettext") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined1 **)(puVar10 + -8) = local_48;" (assignment_expression "*(undefined1 **)(puVar10 + -8) = local_48" (pointer_expression "*(undefined1 **)(puVar10 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar10 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "local_48")) (; ";")) (expression_statement "*(uint *)(puVar10 + -0xc) = local_40;" (assignment_expression "*(uint *)(puVar10 + -0xc) = local_40" (pointer_expression "*(uint *)(puVar10 + -0xc)" (* "*") (cast_expression "(uint *)(puVar10 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x10) = iVar8;" (assignment_expression "*(int *)(puVar10 + -0x10) = iVar8" (pointer_expression "*(int *)(puVar10 + -0x10)" (* "*") (cast_expression "(int *)(puVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = uVar7;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = uVar7" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x21cfe8" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x18)" (( "(") (binary_expression "puVar10 + -0x18" (identifier "puVar10") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x21cfe8")) (; ";")) (expression_statement "FUN_0023b810();" (call_expression "FUN_0023b810()" (identifier "FUN_0023b810") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" (identifier "puVar11") (= "=") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (local_38[0] != local_30) {\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }" (if "if") (parenthesized_expression "(local_38[0] != local_30)" (( "(") (binary_expression "local_38[0] != local_30" (subscript_expression "local_38[0]" (identifier "local_38") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_30")) () ")")) (compound_statement "{\n            *(undefined1 **)(puVar10 + -0x14) = local_38[0];\n            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;\n            FUN_003ae080();\n            puVar11 = puVar10 + -4;\n          }" ({ "{") (expression_statement "*(undefined1 **)(puVar10 + -0x14) = local_38[0];" (assignment_expression "*(undefined1 **)(puVar10 + -0x14) = local_38[0]" (pointer_expression "*(undefined1 **)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined1 **)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (subscript_expression "local_38[0]" (identifier "local_38") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x21d002;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x21d002" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x18)" (( "(") (binary_expression "puVar10 + -0x18" (identifier "puVar10") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x21d002")) (; ";")) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" (identifier "FUN_003ae080") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" (identifier "puVar11") (= "=") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4"))) (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }" (else "else") (compound_statement "{\n        uVar9 = *param_7;\n        *(undefined4 *)(puVar10 + -0x10) = 0;\n        *(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        *(undefined4 *)(puVar10 + -0x18) = param_5;\n        *(int **)(puVar10 + -0x1c) = param_4;\n        *(undefined4 *)(puVar10 + -0x20) = param_9;\n        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;\n        cVar5 = FUN_002cd960();\n        if (cVar5 != '\0') goto LAB_0021c6ca;\n      }" ({ "{") (expression_statement "uVar9 = *param_7;" (assignment_expression "uVar9 = *param_7" (identifier "uVar9") (= "=") (pointer_expression "*param_7" (* "*") (identifier "param_7"))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "*(uint *)(puVar10 + -0x14) =\n             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (pointer_expression "*(uint *)(puVar10 + -0x14)" (* "*") (cast_expression "(uint *)(puVar10 + -0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = param_5;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = param_5" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x18)" (( "(") (binary_expression "puVar10 + -0x18" (identifier "puVar10") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(int **)(puVar10 + -0x1c) = param_4;" (assignment_expression "*(int **)(puVar10 + -0x1c) = param_4" (pointer_expression "*(int **)(puVar10 + -0x1c)" (* "*") (cast_expression "(int **)(puVar10 + -0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x1c)" (( "(") (binary_expression "puVar10 + -0x1c" (identifier "puVar10") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x20) = param_9;" (assignment_expression "*(undefined4 *)(puVar10 + -0x20) = param_9" (pointer_expression "*(undefined4 *)(puVar10 + -0x20)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x20)" (( "(") (binary_expression "puVar10 + -0x20" (identifier "puVar10") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "param_9")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;" (assignment_expression "*(undefined4 *)(puVar10 + -0x24) = 0x21cb5e" (pointer_expression "*(undefined4 *)(puVar10 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x24)" (( "(") (binary_expression "puVar10 + -0x24" (identifier "puVar10") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x21cb5e")) (; ";")) (expression_statement "cVar5 = FUN_002cd960();" (assignment_expression "cVar5 = FUN_002cd960()" (identifier "cVar5") (= "=") (call_expression "FUN_002cd960()" (identifier "FUN_002cd960") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar5 != '\0') goto LAB_0021c6ca;" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0021c6ca;" (goto "goto") (statement_identifier "LAB_0021c6ca") (; ";"))) (} "}")))) (labeled_statement "LAB_0021c770:\n      local_44 = local_44 + 1;" (statement_identifier "LAB_0021c770") (: ":") (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" (identifier "local_44") (= "=") (binary_expression "local_44 + 1" (identifier "local_44") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "param_7 = param_7 + 3;" (assignment_expression "param_7 = param_7 + 3" (identifier "param_7") (= "=") (binary_expression "param_7 + 3" (identifier "param_7") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" (identifier "puVar10") (= "=") (identifier "puVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_8 != local_44)" (( "(") (binary_expression "param_8 != local_44" (identifier "param_8") (!= "!=") (identifier "local_44")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void scan_relocs(Target_s390<32> * this, Symbol_table * symtab, Layout
   * layout, Sized_relobj_file<32,_true> * object, uint data_shndx, uint sh_type, uchar * prelocs,
   size_t reloc_count, Output_section * output_section, bool needs_special_offset_handling, size_t
   local_symbol_count, uchar * plocal_symbols) */

void __thiscall
anon_unknown.dwarf_130c1fc::type_1<32>::function_1
          (type_1<32> *this,type_2 *symtab,type_3 *layout,
          type_4<32,type_5> *object,type_6 data_shndx,type_6 var_3,type_7 *var_10,
          size_t var_7,type_8 *output_section,bool needs_special_offset_handling,
          size_t var_12,type_7 *var_13)

{
  int var_27;
  type_9 *pOVar2;
  type_10 var_26;
  type_11 ppOVar3;
  type_11 ppSVar4;
  type_11 pcVar5;
  type_12 aVar6;
  bool bVar7;
  char *pcVar8;
  type_2 *symndx;
  type_2 *var_35;
  type_13 *var_20;
  type_3 *var_11;
  var_1<32> *var_24;
  type_6 var_9;
  int var_5;
  type_2 *in_stack_ffffff88;
  type_3 *var_15;
  type_3 *layout_00;
  type_3 *var_34;
  var_1<32> *this_1;
  type_14 *gsym;
  type_1<32> *in_stack_ffffff94;
  type_2 *in_stack_ffffff98;
  type_3 *in_stack_ffffff9c;
  size_t var_43;
  type_15 scan;
  bool is_ordinary_1;
  bool is_ordinary;
  type_16 local_20;
  
  var_2();
  if (var_3 == 9) {
    pcVar5 = (object->super_Sized_relobj<32,type_5>).super_Relobj.super_Object.name_._M_dataplus._M_p
    ;
    pcVar8 = (char *)var_4(var_5 + 0x233df7);
    gold::var_6(pcVar8,pcVar5);
    return;
  }
  var_43 = 0;
  if (var_7 != 0) {
    do {
      layout_00 = var_15;
      if (needs_special_offset_handling) {
        var_9 = *(type_6 *)var_10;
        bVar7 = var_16::Output_section::var_8
                          (output_section,(type_17 *)object,data_shndx,
                           (ulonglong)
                           (var_9 >> 0x18 | (var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 |
                           var_9 << 0x18));
        layout_00 = var_15;
        if (bVar7) goto LAB_0021c6ca;
      }
      else {
LAB_0021c6ca:
        var_9 = *(type_6 *)(var_10 + 4);
        var_34 = (type_3 *)(var_9 >> 0x18);
        var_11 = (type_3 *)
                    (((var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 | var_9 << 0x18) >> 8);
        if (var_11 < var_12) {
          if (var_13 == (type_7 *)0x0) {
                    /* WARNING: Subroutine does not return */
            gold::var_14(&UNK_00230e60 + var_5,0x4d,(char *)(var_5 + 0x267e77))
            ;
          }
          var_15 =
               (type_3 *)
               (type_6)(type_18)(*(type_18 *)(var_13 + (int)var_11 * 0x10 + 0xe) << 8 |
                             *(type_18 *)(var_13 + (int)var_11 * 0x10 + 0xe) >> 8);
          if (var_15 < (type_3 *)0xff00) {
LAB_0021caf0:
            if (var_15 != (type_3 *)0x0) {
              ppOVar3 = (object->super_Sized_relobj<32,type_5>).super_Relobj.output_sections_.
                        super__Vector_base<var_16::type_8*,var_17::allocator<var_16::type_8*>var_18>
                        ._M_impl._M_start;
              if ((type_3 *)
                  ((int)(object->super_Sized_relobj<32,type_5>).super_Relobj.output_sections_.
                        super__Vector_base<var_16::type_8*,var_17::allocator<var_16::type_8*>var_18>
                        ._M_impl._M_finish - (int)ppOVar3 >> 2) <= var_15) {
                    /* WARNING: Subroutine does not return */
                gold::var_14
                          (&UNK_00230d0c + var_5,0x50b,(char *)(var_5 + 0x26852b));
              }
              if ((ppOVar3[(int)var_15] == (type_8 *)0x0) &&
                 (in_stack_ffffff88 = (type_2 *)object,
                 bVar7 = var_16::type_2::var_19
                                   (symtab,(type_17 *)object,(type_6)var_15),
                 layout_00 = var_15, !bVar7)) goto _L5076;
            }
          }
          else if (var_15 == (type_3 *)0xffff) {
            var_20 = (object->super_Sized_relobj<32,type_5>).super_Relobj.super_Object.xindex_;
            if (var_20 == (type_13 *)0x0) {
              var_20 = (type_13 *)
                        (*(object->super_Sized_relobj<32,type_5>).super_Relobj.super_Object.
                          _vptr_Object[0x1b])(object);
              (object->super_Sized_relobj<32,type_5>).super_Relobj.super_Object.xindex_ = var_20;
            }
            layout_00 = var_11;
            var_15 =
                 (type_3 *)
                 var_16::type_13::var_21(var_20,(type_19 *)object,(type_6)var_11);
            goto LAB_0021caf0;
          }
          if ((var_13[(int)var_11 * 0x10 + 0xc] & 0xf) == 10) {
            this_1 = (var_1<32> *)0x21c9f3;
            bVar7 = type_15::var_22
                              ((type_15 *)in_stack_ffffff94,
                               (type_4<32,type_5> *)in_stack_ffffff98,
                               (type_6)in_stack_ffffff9c);
            if (bVar7) {
              var_9 = *(type_6 *)(var_10 + 4);
              symndx = (type_2 *)
                       (((var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 | var_9 << 0x18) >> 8);
              var_35 = symndx;
              bVar7 = var_16::type_4<32,type_5>::var_23(object,(type_6)symndx);
              if (!bVar7) {
                var_24 = this->plt_;
                if (var_24 == (var_1<32> *)0x0) {
                  this_1 = (var_1<32> *)0x21d79b;
                  var_25(in_stack_ffffff94,in_stack_ffffff98,in_stack_ffffff9c);
                  var_24 = this->plt_;
                }
                var_9 = var_24->irelative_count_;
                var_24->irelative_count_ = var_9 + 1;
                pOVar2 = var_24->got_irelative_;
                var_26 = (type_10)(pOVar2->super_Output_section_data_build).
                                   super_Output_section_data.super_Output_data.data_size_;
                var_27 = var_26 + 4;
                if (((pOVar2->super_Output_section_data_build).super_Output_section_data.
                     super_Output_data.field_0x1c & 2) != 0) {
                    /* WARNING: Subroutine does not return */
                  gold::var_14
                            (&UNK_00230ce4 + var_5,0x231,(char *)(var_5 + 0x268827));
                }
                *(int *)&(pOVar2->super_Output_section_data_build).super_Output_section_data.
                         super_Output_data.data_size_ = var_27;
                *(int *)((int)&(pOVar2->super_Output_section_data_build).super_Output_section_data.
                               super_Output_data.data_size_ + 4) = var_27 >> 0x1f;
                in_stack_ffffff98 =
                     (type_2 *)
                     var_1<32>::var_28
                               ((var_1<32> *)layout,var_35,layout_00,this_1);
                in_stack_ffffff9c = (type_3 *)var_24->got_irelative_;
                gold::var_29<9,type_5,_32,type_5>::var_29
                          ((var_29<9,type_5,_32,type_5> *)&is_ordinary,
                           &object->super_Sized_relobj<32,type_5>var_30,(type_6)symndx,0x3d,
                           (type_20 *)in_stack_ffffff9c,var_26,false,true,false,false);
                local_20 = 0;
                gold::var_31<4,type_5,_32,type_5>::var_32
                          ((var_31<4,type_5,_32,type_5> *)in_stack_ffffff98,
                           (type_20 *)in_stack_ffffff9c,(type_21 *)&is_ordinary);
                gold::type_4<32,type_5>::var_33
                          (object,(type_6)symndx,var_9 << 5);
              }
            }
          }
          if (var_34 < (type_3 *)0xfc) {
                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            (*(type_22 *)(*(int *)(var_5 + 0x26709f + (int)var_34 * 4) + var_5 + 0x3cd987))();
            return;
          }
          in_stack_ffffff88 =
               (type_2 *)
               (object->super_Sized_relobj<32,type_5>).super_Relobj.super_Object.name_._M_dataplus.
               _M_p;
          pcVar8 = (char *)var_4(var_5 + 0x231077);
          gold::var_6(pcVar8);
          var_15 = var_34;
        }
        else {
          if (var_11 < (type_3 *)object->local_symbol_count_) {
LAB_0021dc20:
                    /* WARNING: Subroutine does not return */
            gold::var_14(&UNK_00230e60 + var_5,0x6a,(char *)(var_5 + 0x267e77))
            ;
          }
          var_9 = (int)var_11 - (int)object->local_symbol_count_;
          ppSVar4 = (object->symbols_).
                    super__Vector_base<var_16::type_14*,var_17::allocator<var_16::type_14*>var_18>._M_impl.
                    _M_start;
          if ((type_6)((int)(object->symbols_).
                          super__Vector_base<var_16::type_14*,var_17::allocator<var_16::type_14*>var_18>._M_impl.
                          _M_finish - (int)ppSVar4 >> 2) <= var_9) {
                    /* WARNING: Subroutine does not return */
            gold::var_14
                      (&UNK_00230d0c + var_5,0x8ad,(char *)(var_5 + 0x267fa7));
          }
          var_35 = (type_2 *)ppSVar4[var_9];
          if (var_35 == (type_2 *)0x0) goto LAB_0021dc20;
          if (((type_6)(var_35->table_)._M_h._M_bucket_count & 0x100000) != 0) {
            in_stack_ffffff88 = var_35;
            var_35 = (type_2 *)var_16::Symbol_table::var_36(symtab,(type_14 *)var_35);
          }
          if (((type_6)(var_35->table_)._M_h._M_bucket_count & 0xf) == 10) {
            gsym = (type_14 *)0x21d01b;
            bVar7 = type_15::var_22
                              ((type_15 *)in_stack_ffffff94,
                               (type_4<32,type_5> *)in_stack_ffffff98,
                               (type_6)in_stack_ffffff9c);
            if ((bVar7) &&
               (*(var_1<32> **var_30)((int)&var_35->dynamic_offset_ + 4) ==
                (var_1<32> *)0xffffffff)) {
              var_37((type_1<32> *)var_35,in_stack_ffffff88,layout_00,gsym);
            }
          }
          if (var_34 < (type_3 *)0xfc) {
                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            (*(type_22 *)(*(int *)(&UNK_002674ef + (int)var_34 * 4 + var_5) + var_5 + 0x3cd987
                      ))();
            return;
          }
          gold::Symbol::var_38((type_14 *)var_35);
          aVar6 = var_39;
          in_stack_ffffff88 =
               (type_2 *)
               (object->super_Sized_relobj<32,type_5>).super_Relobj.super_Object.name_._M_dataplus.
               _M_p;
          pcVar8 = (char *)var_4(var_5 + 0x2310a7);
                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */
          gold::var_6(pcVar8,in_stack_ffffff88,var_34,aVar6.relobj);
          var_15 = var_34;
          if (var_39 != (var_40<32,type_5> *var_30)&var_41) {
            var_42(var_39);
            var_15 = var_34;
          }
        }
      }
_L5076:
      var_43 = var_43 + 1;
      var_10 = var_10 + 0xc;
    } while (var_7 != var_43);
  }
  return;
}


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

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

{
  int iVar1;
  int iVar2;
  int iVar3;
  code *pcVar4;
  char cVar5;
  uint uVar6;
  undefined4 uVar7;
  int iVar8;
  uint uVar9;
  undefined1 *puVar10;
  undefined1 *puVar11;
  int unaff_EDI;
  int aiStackY_a0 [9];
  undefined1 auStack_6c [4];
  undefined4 local_68;
  undefined4 local_64;
  int local_60;
  int local_5c;
  int local_58;
  uint local_54;
  char local_4d;
  uint local_4c;
  undefined1 *local_48;
  int local_44;
  uint local_40;
  undefined1 local_3a;
  undefined1 *local_38 [2];
  undefined1 local_30 [16];
  undefined4 local_20;
  
  FUN_00074f0a();
  puVar10 = auStack_6c;
  local_4d = param_10;
  if (param_6 == 9) {
    iVar8 = param_4[1];
    uVar7 = gettext(unaff_EDI + 0x233df7);
    FUN_0023b810(uVar7,iVar8);
    return;
  }
  local_5c = unaff_EDI + 0x3ce14f;
  local_3a = 0;
  local_44 = 0;
  local_58 = local_5c;
  if (param_8 != 0) {
    do {
      puVar11 = puVar10;
      if (local_4d == '\0') {
LAB_0021c6ca:
        uVar9 = param_7[1];
        local_40 = uVar9 >> 0x18;
        uVar9 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;
        if (uVar9 < param_11) {
          if (param_12 == 0) {
            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;
            *(undefined4 *)(puVar10 + -0xc) = 0x4d;
            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;
                    /* WARNING: Subroutine does not return */
            *(undefined **)(puVar10 + -0x14) = &UNK_0021dc19;
            FUN_002446e0();
          }
          local_48 = (undefined1 *)(uVar9 * 0x10 + param_12);
          uVar6 = (uint)(ushort)(*(ushort *)(local_48 + 0xe) << 8 | *(ushort *)(local_48 + 0xe) >> 8
                                );
          if (uVar6 < 0xff00) {
LAB_0021caf0:
            if (uVar6 != 0) {
              local_4c = param_4[0xf];
              if ((uint)((int)(local_4c - param_4[0xe]) >> 2) <= uVar6) {
                *(int *)(puVar10 + -8) = unaff_EDI + 0x26852b;
                *(undefined4 *)(puVar10 + -0xc) = 0x50b;
                *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;
                    /* WARNING: Subroutine does not return */
                *(undefined **)(puVar10 + -0x14) = &UNK_0021dc74;
                FUN_002446e0();
              }
              if (*(int *)(param_4[0xe] + uVar6 * 4) == 0) {
                *(uint *)(puVar10 + -8) = uVar6;
                *(int **)(puVar10 + -0xc) = param_4;
                *(undefined4 *)(puVar10 + -0x10) = param_2;
                *(undefined4 *)(puVar10 + -0x14) = 0x21cb30;
                cVar5 = FUN_0034cd20();
                if (cVar5 == '\0') goto LAB_0021c770;
              }
            }
          }
          else if (uVar6 == 0xffff) {
            iVar8 = param_4[0xc];
            if (iVar8 == 0) {
              iVar8 = *param_4;
              *(int **)(puVar10 + -0x10) = param_4;
              pcVar4 = *(code **)(iVar8 + 0x6c);
              *(undefined4 *)(puVar10 + -0x14) = 0x21d05e;
              iVar8 = (*pcVar4)();
              param_4[0xc] = iVar8;
            }
            *(uint *)(puVar10 + -8) = uVar9;
            *(int **)(puVar10 + -0xc) = param_4;
            *(int *)(puVar10 + -0x10) = iVar8;
            *(undefined4 *)(puVar10 + -0x14) = 0x21caed;
            uVar6 = FUN_0028b7d0();
            goto LAB_0021caf0;
          }
          local_4c = CONCAT31(local_4c._1_3_,local_48[0xc]) & 0xffffff0f;
          if ((local_48[0xc] & 0xf) == 10) {
            *(undefined4 *)(puVar10 + -4) = 0x21c9f3;
            cVar5 = FUN_0020ec80();
            if (cVar5 != '\0') {
              uVar9 = param_7[1];
              local_54 = ((uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18) >> 8;
              *(uint *)(puVar10 + -0xc) = local_54;
              *(int **)(puVar10 + -0x10) = param_4;
              *(undefined4 *)(puVar10 + -0x14) = 0x21ca17;
              cVar5 = FUN_00290e20();
              if (cVar5 == '\0') {
                iVar8 = *(int *)(param_1 + 0x18);
                if (iVar8 == 0) {
                  *(undefined4 *)(puVar10 + -4) = 0x21d79b;
                  FUN_00210620();
                  iVar8 = *(int *)(param_1 + 0x18);
                }
                local_60 = *(int *)(iVar8 + 0x48) << 5;
                *(int *)(iVar8 + 0x48) = *(int *)(iVar8 + 0x48) + 1;
                iVar2 = *(int *)(iVar8 + 0x40);
                iVar3 = *(int *)(iVar2 + 0xc);
                iVar1 = iVar3 + 4;
                if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {
                  *(int *)(puVar10 + -4) = iVar8;
                  *(int *)(puVar10 + -8) = unaff_EDI + 0x268827;
                  *(undefined4 *)(puVar10 + -0xc) = 0x231;
                  *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230ce4;
                    /* WARNING: Subroutine does not return */
                  *(undefined **)(puVar10 + -0x14) = &UNK_0021dd6f;
                  FUN_002446e0();
                }
                *(int *)(iVar2 + 0xc) = iVar1;
                *(int *)(iVar2 + 0x10) = iVar1 >> 0x1f;
                *(undefined4 *)(puVar10 + -0x10) = param_3;
                *(undefined4 *)(puVar10 + -0x14) = 0x21ca6f;
                local_68 = FUN_00210ef0();
                local_64 = *(undefined4 *)(iVar8 + 0x40);
                *(undefined4 *)(puVar10 + -0xc) = 0;
                *(undefined4 *)(puVar10 + -0x10) = 0;
                *(undefined4 *)(puVar10 + -0x14) = 1;
                *(undefined4 *)(puVar10 + -0x18) = 0;
                *(int *)(puVar10 + -0x1c) = iVar3;
                *(undefined4 *)(puVar10 + -0x20) = local_64;
                *(undefined4 *)(puVar10 + -0x24) = 0x3d;
                *(uint *)(puVar10 + -0x28) = local_54;
                *(int **)(puVar10 + -0x2c) = param_4;
                *(undefined1 ***)(puVar10 + -0x30) = local_38;
                *(undefined4 *)(puVar10 + -0x34) = 0x21ca97;
                FUN_002d70b0();
                *(undefined1 ***)(puVar10 + -8) = local_38;
                *(undefined4 *)(puVar10 + -0xc) = local_64;
                *(undefined4 *)(puVar10 + -0x10) = local_68;
                local_20 = 0;
                *(undefined4 *)(puVar10 + -0x14) = 0x21caaf;
                FUN_000a9fc0();
                *(int *)(puVar10 + -8) = local_60;
                *(uint *)(puVar10 + -0xc) = local_54;
                *(int **)(puVar10 + -0x10) = param_4;
                *(undefined4 *)(puVar10 + -0x14) = 0x21cac0;
                FUN_002b24d0();
              }
            }
          }
          local_54 = CONCAT31(local_54._1_3_,(char)local_4c == '\n');
          if (local_40 < 0xfc) {
                    /* WARNING: Could not recover jumptable at 0x0021c751. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            (*(code *)(*(int *)(unaff_EDI + 0x26709f + local_40 * 4) + unaff_EDI + 0x3cd987))();
            return;
          }
          iVar8 = param_4[1];
          *(int *)(puVar10 + -0x10) = unaff_EDI + 0x231077;
          *(undefined4 *)(puVar10 + -0x14) = 0x21c9b7;
          uVar7 = gettext();
          *(uint *)(puVar10 + -8) = local_40;
          *(int *)(puVar10 + -0xc) = iVar8;
          *(undefined4 *)(puVar10 + -0x10) = uVar7;
          *(undefined4 *)(puVar10 + -0x14) = 0x21c9c4;
          FUN_0023b810();
        }
        else {
          if (uVar9 < (uint)param_4[0x2c]) {
LAB_0021dc20:
            *(int *)(puVar10 + -8) = unaff_EDI + 0x267e77;
            *(undefined4 *)(puVar10 + -0xc) = 0x6a;
            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230e60;
                    /* WARNING: Subroutine does not return */
            *(undefined4 *)(puVar10 + -0x14) = 0x21dc3a;
            FUN_002446e0();
          }
          uVar9 = uVar9 - param_4[0x2c];
          local_48 = (undefined1 *)param_4[0x30];
          if ((uint)((int)local_48 - param_4[0x2f] >> 2) <= uVar9) {
            *(int *)(puVar10 + -8) = unaff_EDI + 0x267fa7;
            *(undefined4 *)(puVar10 + -0xc) = 0x8ad;
            *(int *)(puVar10 + -0x10) = unaff_EDI + 0x230d0c;
                    /* WARNING: Subroutine does not return */
            *(undefined4 *)(puVar10 + -0x14) = 0x21dc57;
            FUN_002446e0();
          }
          iVar8 = *(int *)(param_4[0x2f] + uVar9 * 4);
          if (iVar8 == 0) goto LAB_0021dc20;
          if ((*(byte *)(iVar8 + 0x2a) & 0x10) != 0) {
            *(int *)(puVar10 + -0xc) = iVar8;
            *(undefined4 *)(puVar10 + -0x10) = param_2;
            *(undefined4 *)(puVar10 + -0x14) = 0x21cbc1;
            iVar8 = FUN_0034cd90();
          }
          if ((*(byte *)(iVar8 + 0x28) & 0xf) == 10) {
            *(undefined4 *)(puVar10 + -4) = 0x21d01b;
            cVar5 = FUN_0020ec80();
            if ((cVar5 != '\0') && (*(int *)(iVar8 + 0x18) == -1)) {
              *(int *)(puVar10 + -0x10) = iVar8;
              *(undefined4 *)(puVar10 + -0x14) = 0x21d03f;
              FUN_0021c420();
            }
          }
          if (local_40 < 0xfc) {
                    /* WARNING: Could not recover jumptable at 0x0021cbec. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            (*(code *)(*(int *)(unaff_EDI + 0x2674ef + local_40 * 4) + unaff_EDI + 0x3cd987))();
            return;
          }
          *(int *)(puVar10 + -0xc) = iVar8;
          *(undefined1 ***)(puVar10 + -0x10) = local_38;
          *(undefined4 *)(puVar10 + -0x14) = 0x21cfbf;
          FUN_0034dd40();
          iVar8 = param_4[1];
          local_48 = local_38[0];
          *(int *)(puVar10 + -0x14) = unaff_EDI + 0x2310a7;
          *(undefined4 *)(puVar10 + -0x18) = 0x21cfd7;
          uVar7 = gettext();
          *(undefined1 **)(puVar10 + -8) = local_48;
          *(uint *)(puVar10 + -0xc) = local_40;
          *(int *)(puVar10 + -0x10) = iVar8;
          *(undefined4 *)(puVar10 + -0x14) = uVar7;
                    /* try { // try from 0021cfe3 to 0021cfe7 has its CatchHandler @ 0021dda5 */
          *(undefined4 *)(puVar10 + -0x18) = 0x21cfe8;
          FUN_0023b810();
          puVar11 = puVar10 + -4;
          if (local_38[0] != local_30) {
            *(undefined1 **)(puVar10 + -0x14) = local_38[0];
            *(undefined4 *)(puVar10 + -0x18) = 0x21d002;
            FUN_003ae080();
            puVar11 = puVar10 + -4;
          }
        }
      }
      else {
        uVar9 = *param_7;
        *(undefined4 *)(puVar10 + -0x10) = 0;
        *(uint *)(puVar10 + -0x14) =
             uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
        *(undefined4 *)(puVar10 + -0x18) = param_5;
        *(int **)(puVar10 + -0x1c) = param_4;
        *(undefined4 *)(puVar10 + -0x20) = param_9;
        *(undefined4 *)(puVar10 + -0x24) = 0x21cb5e;
        cVar5 = FUN_002cd960();
        if (cVar5 != '\0') goto LAB_0021c6ca;
      }
LAB_0021c770:
      local_44 = local_44 + 1;
      param_7 = param_7 + 3;
      puVar10 = puVar11;
    } while (param_8 != local_44);
  }
  return;
}

