
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void make_copy_reloc(Copy_relocs<4,_64,_false> * this, Symbol_table *
   symtab, Layout * layout, Sized_symbol<64> * sym, Sized_relobj_file<64,_false> * object,
   Output_data_reloc<4,_true,_64,_false> * reloc_section) */

void __thiscall
gold::Copy_relocs<4,_64,_false>::make_copy_reloc
          (Copy_relocs<4,_64,_false> *this,Symbol_table *symtab,Layout *layout,Sized_symbol<64> *sym
          ,Sized_relobj_file<64,_false> *object,Output_data_reloc<4,_true,_64,_false> *reloc_section
          )

{
  pointer *pppOVar1;
  bool bVar2;
  Output_segment *pOVar3;
  Input_file *pIVar4;
  uint uVar5;
  undefined **ppuVar6;
  pointer pcVar7;
  Object *pOVar8;
  uint uVar9;
  int iVar10;
  undefined1 *puVar11;
  char *format;
  Output_data_space *pOVar12;
  General_options *pGVar13;
  uint extraout_ECX;
  uint extraout_EDX;
  General_options **ppGVar14;
  uint uVar15;
  uint64_t uVar16;
  General_options *pGStack_60;
  uint local_5c;
  int local_58;
  uint local_54;
  undefined **local_50;
  General_options *local_4c;
  uint local_48;
  Object *local_44;
  uint local_40;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  local_50 = &_GLOBAL_OFFSET_TABLE_;
  pGVar13 = parameters->options_;
  if (pGVar13 == (General_options *)0x0) {
    pGStack_60 = pGVar13;
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  if ((pGVar13->copyreloc_).value == false) {
    pGStack_60 = pGVar13;
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");
  }
  if ((((sym->super_Symbol).field_0x2a & 7) != 0) ||
     (pOVar3 = (sym->super_Symbol).u1_.output_segment,
     ((uint)pOVar3->output_lists_[3].
            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
            _M_end_of_storage & 1) == 0)) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");
  }
  if (((sym->super_Symbol).field_0x2c & 8) == 0) {
    local_58 = *(int *)((int)&sym->symsize_ + 4);
    local_5c = (uint)sym->symsize_;
  }
  else {
    local_4c = (General_options *)
               pOVar3->output_lists_[0].
               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
               _M_finish;
    local_44 = (Object *)(sym->super_Symbol).name_;
    pcVar7 = (object->super_Sized_relobj<64,_false>).super_Relobj.super_Object.name_._M_dataplus.
             _M_p;
    format = (char *)gettext(
                            "%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"
                            );
    pGStack_60 = local_4c;
    gold_error(format,pcVar7,local_44);
    local_58 = *(int *)((int)&sym->symsize_ + 4);
    local_5c = (uint)sym->symsize_;
    if (((sym->super_Symbol).field_0x2a & 7) != 0) {
      pGStack_60 = (General_options *)sym;
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable((char *)(local_50 + -0x67308),0xaa,(char *)(local_50 + -0x590f1));
    }
  }
  local_54 = (sym->super_Symbol).u2_.shndx;
  if (((sym->super_Symbol).field_0x2b & 0x20) == 0) {
    pGStack_60 = (General_options *)sym;
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(local_50 + -0x5917e),0x8e,(char *)(local_50 + -0x59146));
  }
  local_44 = (sym->super_Symbol).u1_.object;
  if (local_44->input_file_ != (Input_file *)0x0) {
    File_read::lock(&local_44->input_file_->file_,(Task *)0xffffffff);
  }
                    /* try { // try from 0022beb2 to 0022befd has its CatchHandler @ 0022c34d */
  local_4c = (General_options *)(*local_44->_vptr_Object[0x17])(local_44,local_54);
  pOVar8 = local_44;
  pGVar13 = parameters->options_;
  if (pGVar13 == (General_options *)0x0) {
    pGStack_60 = pGVar13;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */
    do_gold_unreachable((char *)((int)local_50 + -0x1a1d93),0x5c,(char *)(local_50 + -0x590f3));
  }
  bVar2 = (pGVar13->relro_).value;
  uVar15 = (uint)bVar2;
  ppGVar14 = (General_options **)&local_5c;
  local_48 = extraout_EDX;
  if ((bVar2 != false) &&
     (uVar9 = (*local_44->_vptr_Object[0x11])(local_44,local_54),
     ppGVar14 = (General_options **)&local_5c, (uVar9 & 1) != 0)) {
    (*pOVar8->_vptr_Object[0x10])(local_34,pOVar8,local_54);
    iVar10 = std::string::compare((char *)local_34);
    puVar11 = local_2c;
    if (local_34[0] != puVar11) {
      operator_delete(local_34[0]);
    }
    ppGVar14 = &pGStack_60;
    uVar15 = CONCAT31((int3)((uint)puVar11 >> 8),iVar10 == 0);
  }
  pIVar4 = local_44->input_file_;
  if (pIVar4 != (Input_file *)0x0) {
    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xffffffff;
    *(File_read **)((int)ppGVar14 + -0x10) = &pIVar4->file_;
    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22bf4f;
    File_read::unlock(*(File_read **)((int)ppGVar14 + -0x10),*(Task **)((int)ppGVar14 + -0xc));
  }
  ppuVar6 = local_50;
  uVar9 = (uint)sym->value_;
  uVar5 = *(uint *)((int)&sym->value_ + 4);
  local_44 = (Object *)((int)local_4c - 1);
  local_40 = (local_48 - 1) + (uint)(local_4c != (General_options *)0x0);
  if ((local_40 & uVar5) != 0 || ((uint)local_44 & uVar9) != 0) {
    local_44 = (Object *)local_4c;
    local_40 = local_48;
    do {
      local_4c = (General_options *)((uint)local_44 >> 1 | local_40 << 0x1f);
      local_48 = local_40 >> 1;
      local_44 = (Object *)local_4c;
      local_40 = local_48;
    } while (((local_48 - 1) + (uint)(local_4c != (General_options *)0x0) & uVar5) != 0 ||
             ((int)local_4c - 1U & uVar9) != 0);
  }
  if (((sym->super_Symbol).field_0x2a & 7) != 0) {
    *(uint *)((int)ppGVar14 + -4) = uVar15;
    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e6;
    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xa1;
    *(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x67308;
                    /* WARNING: Subroutine does not return */
    *(undefined1 **)((int)ppGVar14 + -0x14) = &LAB_0022c34d;
    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),
                        *(char **)((int)ppGVar14 + -8));
  }
  pppOVar1 = &((sym->super_Symbol).u1_.output_segment)->output_lists_[3].
              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
              _M_end_of_storage;
  *(byte *)pppOVar1 = *(byte *)pppOVar1 | 2;
  if ((char)uVar15 == '\0') {
    pOVar12 = this->dynbss_;
    if (pOVar12 == (Output_data_space *)0x0) {
      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;
      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c14a;
      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));
      *(undefined4 *)
       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        address_ = 0;
      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);
      *(General_options **)
       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;
      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.
                      addralign_ + 4) = local_48;
      *(undefined4 *)
       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .address_ + 4) = 0;
      *(undefined4 *)
       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        data_size_ = 0;
      *(undefined4 *)
       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .data_size_ + 4) = 0;
      *(undefined4 *)
       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        offset_ = 0xffffffff;
      *(undefined4 *)
       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .offset_ + 4) = 0xffffffff;
      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.
                 super_Output_data.field_0x1c;
      *puVar11 = *puVar11 & 0xe0;
      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =
           (Output_section *)0x0;
      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645c5);
      this->dynbss_ = pOVar12;
      *(undefined4 *)((int)ppGVar14 + -4) = 0;
      *(undefined4 *)((int)ppGVar14 + -8) = 0x1b;
      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;
      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;
      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;
      *(undefined4 *)((int)ppGVar14 + -0x18) = 8;
      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645bb;
      *(Layout **)((int)ppGVar14 + -0x20) = layout;
      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c1c1;
      Layout::add_output_section_data
                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),
                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),
                 *(Output_section_data **)((int)ppGVar14 + -0xc),
                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));
      pOVar12 = this->dynbss_;
    }
  }
  else {
    pOVar12 = this->dynrelro_;
    if (pOVar12 == (Output_data_space *)0x0) {
      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;
      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c20d;
      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));
      *(undefined4 *)
       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        address_ = 0;
      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);
      *(General_options **)
       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;
      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.
                      addralign_ + 4) = local_48;
      *(undefined4 *)
       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .address_ + 4) = 0;
      *(undefined4 *)
       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        data_size_ = 0;
      *(undefined4 *)
       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .data_size_ + 4) = 0;
      *(undefined4 *)
       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        offset_ = 0xffffffff;
      *(undefined4 *)
       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .offset_ + 4) = 0xffffffff;
      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.
                 super_Output_data.field_0x1c;
      *puVar11 = *puVar11 & 0xe0;
      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =
           (Output_section *)0x0;
      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645d1);
      this->dynrelro_ = pOVar12;
      *(undefined4 *)((int)ppGVar14 + -4) = 0;
      *(undefined4 *)((int)ppGVar14 + -8) = 0x13;
      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;
      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;
      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;
      *(undefined4 *)((int)ppGVar14 + -0x18) = 1;
      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645de;
      *(Layout **)((int)ppGVar14 + -0x20) = layout;
      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c284;
      Layout::add_output_section_data
                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),
                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),
                 *(Output_section_data **)((int)ppGVar14 + -0xc),
                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));
      pOVar12 = this->dynrelro_;
    }
  }
  ppuVar6 = (undefined **)
            (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.
            _vptr_Output_data[3];
  if (ppuVar6 == local_50 + -0x15e484) {
    uVar16 = (pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_;
  }
  else {
    *(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12;
    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1f6;
    uVar16 = (*(code *)ppuVar6)();
  }
  uVar15 = (uint)(uVar16 >> 0x20);
  pGVar13 = local_4c;
  if (uVar15 < local_48 || uVar15 - local_48 < (uint)((uint)uVar16 < local_4c)) {
    *(uint *)((int)ppGVar14 + -8) = local_48;
    *(General_options **)((int)ppGVar14 + -0xc) = local_4c;
    *(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12;
    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1de;
    Output_section_data::set_addralign
              (*(Output_section_data **)((int)ppGVar14 + -0x10),*(uint64_t *)((int)ppGVar14 + -0xc))
    ;
    pGVar13 = (General_options *)extraout_ECX;
  }
  uVar15 = (uint)(pOVar12->super_Output_section_data_build).super_Output_section_data.
                 super_Output_data.data_size_;
  if (*(int *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.
                     super_Output_data.data_size_ + 4) != 0) {
    *(General_options **)((int)ppGVar14 + -4) = pGVar13;
    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x5911e;
    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xc0;
    *(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x672d3;
                    /* WARNING: Subroutine does not return */
    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c331;
    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),
                        *(char **)((int)ppGVar14 + -8));
  }
  local_40 = 0;
  local_44 = (Object *)uVar15;
  if (local_48 != 0 || local_4c != (General_options *)0x0) {
    local_44 = (Object *)(-(int)local_4c & ((int)local_4c - 1U) + uVar15);
  }
  iVar10 = local_58 + (uint)CARRY4(local_5c,(uint)local_44);
  if (((pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.
       field_0x1c & 2) != 0) {
    *(int *)((int)ppGVar14 + -4) = iVar10;
    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e0;
    *(undefined4 *)((int)ppGVar14 + -0xc) = 0x231;
    *(int *)((int)ppGVar14 + -0x10) = (int)local_50 + -0x19cca3;
                    /* WARNING: Subroutine does not return */
    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c315;
    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),
                        *(char **)((int)ppGVar14 + -8));
  }
  *(uint *)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.
            data_size_ = local_5c + (int)local_44;
  *(int *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.
                 super_Output_data.data_size_ + 4) = iVar10;
  *(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8) = reloc_section;
  *(undefined4 *)((int)ppGVar14 + -0xc) = 0;
  *(Object **)((int)ppGVar14 + -0x10) = local_44;
  *(Output_data_space **)((int)ppGVar14 + -0x14) = pOVar12;
  *(Sized_symbol<64> **)((int)ppGVar14 + -0x18) = sym;
  *(Symbol_table **)((int)ppGVar14 + -0x1c) = symtab;
  *(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20) = this;
  *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c081;
  emit_copy_reloc(*(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20),
                  *(Symbol_table **)((int)ppGVar14 + -0x1c),
                  *(Sized_symbol<64> **)((int)ppGVar14 + -0x18),
                  *(Output_data **)((int)ppGVar14 + -0x14),*(off_t *)((int)ppGVar14 + -0x10),
                  *(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8));
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

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

{
  undefined4 *puVar1;
  undefined **ppuVar2;
  undefined4 uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  longlong lVar6;
  uint uVar7;
  int iVar8;
  undefined1 *puVar9;
  undefined4 uVar10;
  int *piVar11;
  uint extraout_ECX;
  undefined4 **ppuVar12;
  uint uVar13;
  bool bVar14;
  bool bVar15;
  undefined8 uVar16;
  undefined4 *puStack_60;
  uint local_5c;
  int local_58;
  undefined4 local_54;
  undefined **local_50;
  undefined8 local_4c;
  undefined8 local_44;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  local_50 = &__DT_PLTGOT;
  puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);
  if (puVar1 == (undefined4 *)0x0) {
    puStack_60 = puVar1;
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/parameters.h",0x5c,"options");
  }
  if (*(char *)((int)puVar1 + 0x52d9) == '\0') {
    puStack_60 = puVar1;
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");
  }
  if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");
  }
  if ((*(byte *)(param_4 + 0xb) & 8) == 0) {
    local_58 = param_4[0xf];
    local_5c = param_4[0xe];
  }
  else {
    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);
    local_44._0_4_ = (int *)*param_4;
    uVar3 = *(undefined4 *)(param_5 + 4);
    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");
    puStack_60 = (undefined4 *)local_4c;
    FUN_0023b810(uVar10,uVar3,(int *)local_44);
    local_58 = param_4[0xf];
    local_5c = param_4[0xe];
    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {
      puStack_60 = param_4;
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);
    }
  }
  local_54 = param_4[3];
  if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {
    local_44._0_4_ = (int *)param_4[2];
    if (((int *)local_44)[7] != 0) {
      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);
    }
                    /* try { // try from 0022beb2 to 0022befd has its CatchHandler @ 0022c34d */
    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);
    piVar11 = (int *)local_44;
    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);
    if (puVar1 == (undefined4 *)0x0) {
      puStack_60 = puVar1;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */
      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);
    }
    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);
    ppuVar12 = (undefined4 **)&local_5c;
    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {
      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);
      ppuVar12 = (undefined4 **)&local_5c;
      if ((uVar7 & 1) != 0) {
        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);
        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);
        puVar9 = local_2c;
        if (local_34[0] != puVar9) {
          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);
        }
        ppuVar12 = &puStack_60;
        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);
      }
    }
    iVar8 = ((int *)local_44)[7];
    if (iVar8 != 0) {
      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;
      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;
      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;
      FUN_0023dd30();
    }
    ppuVar2 = local_50;
    local_44 = local_4c - 1;
    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {
      do {
        uVar4 = local_4c >> 1;
        local_4c = local_4c >> 1;
        lVar6 = uVar4 - 1;
        local_44 = local_4c;
      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||
               ((uint)lVar6 & param_4[0xc]) != 0);
    }
    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {
      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;
      if ((char)uVar13 == '\0') {
        piVar11 = *(int **)(param_1 + 0x10);
        if (piVar11 == (int *)0x0) {
          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;
          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;
          piVar11 = (int *)FUN_003ac4d0();
          piVar11[1] = 0;
          *piVar11 = (int)(ppuVar2 + -0x384c);
          *(ulonglong *)(piVar11 + 9) = local_4c;
          piVar11[2] = 0;
          piVar11[3] = 0;
          piVar11[4] = 0;
          piVar11[5] = -1;
          piVar11[6] = -1;
          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;
          piVar11[8] = 0;
          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;
          *(int **)(param_1 + 0x10) = piVar11;
          *(undefined4 *)((int)ppuVar12 + -4) = 0;
          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;
          *(int **)((int)ppuVar12 + -0xc) = piVar11;
          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;
          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;
          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;
          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;
          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;
          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;
          FUN_0027afd0();
          piVar11 = *(int **)(param_1 + 0x10);
        }
      }
      else {
        piVar11 = *(int **)(param_1 + 0x14);
        if (piVar11 == (int *)0x0) {
          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;
          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;
          piVar11 = (int *)FUN_003ac4d0();
          piVar11[1] = 0;
          *piVar11 = (int)(ppuVar2 + -0x384c);
          *(ulonglong *)(piVar11 + 9) = local_4c;
          piVar11[2] = 0;
          piVar11[3] = 0;
          piVar11[4] = 0;
          piVar11[5] = -1;
          piVar11[6] = -1;
          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;
          piVar11[8] = 0;
          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;
          *(int **)(param_1 + 0x14) = piVar11;
          *(undefined4 *)((int)ppuVar12 + -4) = 0;
          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;
          *(int **)((int)ppuVar12 + -0xc) = piVar11;
          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;
          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;
          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;
          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;
          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;
          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;
          FUN_0027afd0();
          piVar11 = *(int **)(param_1 + 0x14);
        }
      }
      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);
      if (ppuVar2 == local_50 + -0x15e484) {
        uVar16 = *(undefined8 *)(piVar11 + 9);
        uVar4 = local_4c;
      }
      else {
        *(int **)((int)ppuVar12 + -0x10) = piVar11;
        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;
        uVar16 = (*(code *)ppuVar2)();
        uVar4 = local_4c;
      }
      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);
      local_4c._4_4_ = (uint)(uVar4 >> 0x20);
      local_4c._0_4_ = (undefined4 *)uVar4;
      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;
      bVar15 = uVar13 < local_4c._4_4_;
      uVar13 = uVar13 - local_4c._4_4_;
      uVar7 = (uint)(undefined4 *)local_4c;
      local_4c = uVar4;
      uVar5 = local_44;
      if (bVar15 || uVar13 < bVar14) {
        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;
        *(int **)((int)ppuVar12 + -0x10) = piVar11;
        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;
        FUN_002c5f50();
        uVar7 = extraout_ECX;
        uVar5 = local_44;
      }
      local_44._0_4_ = (int *)piVar11[3];
      if (piVar11[4] == 0) {
        local_44._4_4_ = 0;
        if (local_4c != 0) {
          local_44._0_4_ =
               (int *)(-(int)(undefined4 *)local_4c &
                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);
        }
        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);
        if ((*(byte *)(piVar11 + 7) & 2) == 0) {
          piVar11[3] = local_5c + (int)(int *)local_44;
          piVar11[4] = iVar8;
          *(undefined4 *)((int)ppuVar12 + -8) = param_6;
          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;
          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;
          *(int **)((int)ppuVar12 + -0x14) = piVar11;
          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;
          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;
          *(int *)((int)ppuVar12 + -0x20) = param_1;
          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;
          FUN_0022bc40();
          return;
        }
        *(int *)((int)ppuVar12 + -4) = iVar8;
        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;
        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;
        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;
                    /* WARNING: Subroutine does not return */
        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;
        FUN_002446e0();
      }
      *(uint *)((int)ppuVar12 + -4) = uVar7;
      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;
      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;
      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;
                    /* WARNING: Subroutine does not return */
      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;
      local_44 = uVar5;
      FUN_002446e0();
    }
    *(uint *)((int)ppuVar12 + -4) = uVar13;
    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;
    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;
    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;
                    /* WARNING: Subroutine does not return */
    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;
    FUN_002446e0();
  }
  puStack_60 = param_4;
                    /* WARNING: Subroutine does not return */
  FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);
}


CALL 0x00074f02
ADD EAX,0x3be1fb
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4c
LEA ESI,[EAX + 0x7c8]
MOV dword ptr [EBP + -0x4c],EAX
MOV EAX,dword ptr [ESI]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x0022c292
CMP byte ptr [EAX + 0x52d9],0x0
JZ 0x0022c2ab
MOV EAX,dword ptr [EBP + 0x14]
TEST byte ptr [EAX + 0x2a],0x7
JNZ 0x0022c090
MOV EAX,dword ptr [EAX + 0x8]
TEST byte ptr [EAX + 0x2c],0x1
JZ 0x0022c090
MOV EDI,dword ptr [EBP + 0x14]
TEST byte ptr [EDI + 0x2c],0x8
JNZ 0x0022c0b0
MOV EAX,dword ptr [EBP + 0x14]
MOV EDX,dword ptr [EAX + 0x3c]
MOV EAX,dword ptr [EAX + 0x38]
MOV dword ptr [EBP + -0x54],EDX
MOV dword ptr [EBP + -0x58],EAX
MOV EAX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [EBP + -0x50],EAX
MOV EAX,dword ptr [EBP + 0x14]
TEST byte ptr [EAX + 0x2b],0x20
JZ 0x0022c2c4
MOV EAX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [EBP + -0x40],EAX
MOV EAX,dword ptr [EAX + 0x1c]
TEST EAX,EAX
JZ 0x0022bea6
SUB ESP,0x8
ADD EAX,0x1c
MOV EBX,dword ptr [EBP + -0x4c]
PUSH -0x1
PUSH EAX
CALL 0x0023cd00
ADD ESP,0x10
MOV EDI,dword ptr [EBP + -0x40]
SUB ESP,0x8
MOV EAX,dword ptr [EDI]
PUSH dword ptr [EBP + -0x50]
PUSH EDI
CALL dword ptr [EAX + 0x5c]
MOV dword ptr [EBP + -0x48],EAX
MOV EAX,dword ptr [ESI]
ADD ESP,0x10
MOV dword ptr [EBP + -0x44],EDX
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x0022c2e0
MOVZX ESI,byte ptr [EAX + 0x56b9]
MOV EAX,ESI
TEST AL,AL
JZ 0x0022bf34
MOV EDI,dword ptr [EBP + -0x40]
SUB ESP,0x8
MOV EAX,dword ptr [EDI]
PUSH dword ptr [EBP + -0x50]
PUSH EDI
CALL dword ptr [EAX + 0x44]
ADD ESP,0x10
TEST AL,0x1
JZ 0x0022bf34
MOV EAX,dword ptr [EDI]
SUB ESP,0x4
LEA EBX,[EBP + -0x30]
PUSH dword ptr [EBP + -0x50]
PUSH EDI
PUSH EBX
CALL dword ptr [EAX + 0x40]
MOV EDI,dword ptr [EBP + -0x4c]
LEA EAX,[EDI + 0xffe9ba22]
MOV dword ptr [ESP],EAX
PUSH EBX
MOV EBX,EDI
CALL 0x003b8640
MOV EDX,dword ptr [EBP + -0x30]
ADD ESP,0x10
MOV ESI,EAX
LEA EAX,[EBP + -0x28]
CMP EDX,EAX
JZ 0x0022bf2d
SUB ESP,0xc
PUSH EDX
CALL 0x003ae080
ADD ESP,0x10
TEST ESI,ESI
SETZ AL
MOV ESI,EAX
MOV EAX,dword ptr [EBP + -0x40]
MOV EAX,dword ptr [EAX + 0x1c]
TEST EAX,EAX
JZ 0x0022bf52
SUB ESP,0x8
ADD EAX,0x1c
MOV EBX,dword ptr [EBP + -0x4c]
PUSH -0x1
PUSH EAX
CALL 0x0023dd30
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x14]
MOV EDX,dword ptr [EBP + -0x44]
MOV EBX,dword ptr [EAX + 0x30]
MOV ECX,dword ptr [EAX + 0x34]
MOV EAX,dword ptr [EBP + -0x48]
ADD EAX,-0x1
ADC EDX,-0x1
MOV dword ptr [EBP + -0x40],EAX
AND EAX,EBX
MOV dword ptr [EBP + -0x3c],EDX
MOV EDX,dword ptr [EBP + -0x3c]
AND EDX,ECX
OR EDX,EAX
JZ 0x0022bfba
MOV EAX,dword ptr [EBP + -0x48]
MOV EDX,dword ptr [EBP + -0x44]
MOV dword ptr [EBP + -0x40],EAX
MOV dword ptr [EBP + -0x3c],EDX
LEA ESI,[ESI]
MOV EDX,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EBP + -0x40]
SHRD EAX,EDX,0x1
SHR EDX,0x1
MOV dword ptr [EBP + -0x40],EAX
ADD EAX,-0x1
MOV dword ptr [EBP + -0x3c],EDX
ADC EDX,-0x1
AND EAX,EBX
MOV dword ptr [EBP + -0x44],EDX
MOV EDX,dword ptr [EBP + -0x44]
AND EDX,ECX
OR EDX,EAX
JNZ 0x0022bf88
MOV EAX,dword ptr [EBP + -0x40]
MOV EDX,dword ptr [EBP + -0x3c]
MOV dword ptr [EBP + -0x48],EAX
MOV dword ptr [EBP + -0x44],EDX
MOV EAX,dword ptr [EBP + 0x14]
TEST byte ptr [EAX + 0x2a],0x7
JNZ 0x0022c331
MOV EAX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EAX + 0x8]
OR byte ptr [EAX + 0x2c],0x2
MOV EAX,ESI
TEST AL,AL
MOV EAX,dword ptr [EBP + 0x8]
JZ 0x0022c130
MOV ESI,dword ptr [EAX + 0x14]
TEST ESI,ESI
JZ 0x0022c1fe
MOV EAX,dword ptr [ESI]
MOV EDI,dword ptr [EBP + -0x4c]
MOV EAX,dword ptr [EAX + 0xc]
LEA EDX,[EDI + 0xffa86df0]
CMP EAX,EDX
JNZ 0x0022c1f0
MOV EAX,dword ptr [ESI + 0x24]
MOV EDX,dword ptr [ESI + 0x28]
MOV ECX,dword ptr [EBP + -0x48]
MOV EBX,dword ptr [EBP + -0x44]
CMP EAX,ECX
SBB EDX,EBX
JC 0x0022c1d0
MOV EBX,dword ptr [ESI + 0x10]
MOV EAX,dword ptr [ESI + 0xc]
TEST EBX,EBX
JNZ 0x0022c315
MOV EBX,dword ptr [EBP + -0x44]
MOV ECX,dword ptr [EBP + -0x48]
MOV dword ptr [EBP + -0x40],EAX
MOV dword ptr [EBP + -0x3c],0x0
MOV EDX,EBX
MOV EAX,ECX
OR EDX,ECX
JZ 0x0022c04a
ADD EAX,-0x1
ADD EAX,dword ptr [EBP + -0x40]
NEG ECX
MOV EDI,ECX
AND EDI,EAX
MOV dword ptr [EBP + -0x40],EDI
MOV EAX,dword ptr [EBP + -0x58]
MOV EDX,dword ptr [EBP + -0x54]
ADD EAX,dword ptr [EBP + -0x40]
ADC EDX,dword ptr [EBP + -0x3c]
TEST byte ptr [ESI + 0x1c],0x2
JNZ 0x0022c2f9
SUB ESP,0x4
MOV dword ptr [ESI + 0xc],EAX
MOV dword ptr [ESI + 0x10],EDX
PUSH dword ptr [EBP + 0x1c]
PUSH dword ptr [EBP + -0x3c]
PUSH dword ptr [EBP + -0x40]
PUSH ESI
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0x8]
CALL 0x0022bc40
ADD ESP,0x20
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBX,dword ptr [EBP + -0x4c]
SUB ESP,0x4
LEA EAX,[EBX + 0xffe9bae8]
PUSH EAX
LEA EAX,[EBX + 0xffe9ba08]
PUSH 0x78
PUSH EAX
CALL 0x002446e0
MOV ECX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EBP + 0x14]
SUB ESP,0xc
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x48],ECX
MOV ECX,dword ptr [EBP + -0x4c]
MOV dword ptr [EBP + -0x40],EAX
MOV EAX,dword ptr [EBP + 0x18]
MOV EBX,ECX
MOV EDI,dword ptr [EAX + 0x4]
LEA EAX,[ECX + 0xffe9ba4c]
PUSH EAX
CALL 0x00039440
MOV ECX,dword ptr [EBP + -0x48]
ADD ESP,0x10
MOV EBX,dword ptr [EBP + -0x4c]
PUSH ECX
PUSH dword ptr [EBP + -0x40]
PUSH EDI
PUSH EAX
CALL 0x0023b810
MOV EAX,dword ptr [EBP + 0x14]
ADD ESP,0x10
MOV EDX,dword ptr [EAX + 0x3c]
MOV EAX,dword ptr [EAX + 0x38]
MOV dword ptr [EBP + -0x58],EAX
MOV EAX,dword ptr [EBP + 0x14]
MOV dword ptr [EBP + -0x54],EDX
TEST byte ptr [EAX + 0x2a],0x7
JZ 0x0022be6c
MOV EBX,dword ptr [EBP + -0x4c]
PUSH EAX
LEA EAX,[EBX + 0xffe9bc3c]
PUSH EAX
LEA EAX,[EBX + 0xffe633e0]
PUSH 0xaa
PUSH EAX
CALL 0x002446e0
MOV ESI,dword ptr [EAX + 0x10]
TEST ESI,ESI
JNZ 0x0022bfe9
SUB ESP,0xc
MOV EDI,dword ptr [EBP + -0x4c]
PUSH 0x30
MOV EBX,EDI
CALL 0x003ac4d0
MOV EBX,dword ptr [EBP + -0x48]
MOV ESI,dword ptr [EBP + -0x44]
ADD ESP,0x10
LEA EDX,[EDI + 0xffff1ed0]
MOV ECX,dword ptr [EBP + 0x8]
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX],EDX
LEA EDX,[EDI + 0xffe9ba3b]
MOV dword ptr [EAX + 0x24],EBX
MOV EBX,EDI
MOV dword ptr [EAX + 0x28],ESI
MOV dword ptr [EAX + 0x8],0x0
MOV dword ptr [EAX + 0xc],0x0
MOV dword ptr [EAX + 0x10],0x0
MOV dword ptr [EAX + 0x14],0xffffffff
MOV dword ptr [EAX + 0x18],0xffffffff
AND byte ptr [EAX + 0x1c],0xe0
MOV dword ptr [EAX + 0x20],0x0
MOV dword ptr [EAX + 0x2c],EDX
MOV dword ptr [ECX + 0x10],EAX
PUSH 0x0
PUSH 0x1b
PUSH EAX
LEA EAX,[EDI + 0xffe9ba45]
PUSH 0x0
PUSH 0x3
PUSH 0x8
PUSH EAX
PUSH dword ptr [EBP + 0x10]
CALL 0x0027afd0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x20
MOV ESI,dword ptr [EAX + 0x10]
JMP 0x0022bfe9
SUB ESP,0x4
PUSH EBX
MOV EBX,dword ptr [EBP + -0x4c]
PUSH ECX
PUSH ESI
CALL 0x002c5f50
ADD ESP,0x10
JMP 0x0022c015
SUB ESP,0xc
PUSH ESI
CALL EAX
ADD ESP,0x10
JMP 0x0022c005
SUB ESP,0xc
MOV EDI,dword ptr [EBP + -0x4c]
PUSH 0x30
MOV EBX,EDI
CALL 0x003ac4d0
MOV EBX,dword ptr [EBP + -0x48]
MOV ESI,dword ptr [EBP + -0x44]
ADD ESP,0x10
LEA EDX,[EDI + 0xffff1ed0]
MOV ECX,dword ptr [EBP + 0x8]
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX],EDX
LEA EDX,[EDI + 0xffe9ba2f]
MOV dword ptr [EAX + 0x24],EBX
MOV EBX,EDI
MOV dword ptr [EAX + 0x28],ESI
MOV dword ptr [EAX + 0x8],0x0
MOV dword ptr [EAX + 0xc],0x0
MOV dword ptr [EAX + 0x10],0x0
MOV dword ptr [EAX + 0x14],0xffffffff
MOV dword ptr [EAX + 0x18],0xffffffff
AND byte ptr [EAX + 0x1c],0xe0
MOV dword ptr [EAX + 0x20],0x0
MOV dword ptr [EAX + 0x2c],EDX
MOV dword ptr [ECX + 0x14],EAX
PUSH 0x0
PUSH 0x13
PUSH EAX
LEA EAX,[EDI + 0xffe9ba22]
PUSH 0x0
PUSH 0x3
PUSH 0x1
PUSH EAX
PUSH dword ptr [EBP + 0x10]
CALL 0x0027afd0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x20
MOV ESI,dword ptr [EAX + 0x14]
JMP 0x0022bfe9
MOV EBX,dword ptr [EBP + -0x4c]
PUSH EAX
LEA EAX,[EBX + 0xffe9bc34]
PUSH EAX
LEA EAX,[EBX + 0xffe5e26d]
PUSH 0x5c
PUSH EAX
CALL 0x002446e0
MOV EBX,dword ptr [EBP + -0x4c]
PUSH EAX
LEA EAX,[EBX + 0xffe9bae8]
PUSH EAX
LEA EAX,[EBX + 0xffe9ba08]
PUSH 0x76
PUSH EAX
CALL 0x002446e0
MOV EBX,dword ptr [EBP + -0x4c]
PUSH EAX
LEA EAX,[EBX + 0xffe9bae8]
PUSH EAX
LEA EAX,[EBX + 0xffe9ba08]
PUSH 0x8e
PUSH EAX
CALL 0x002446e0
MOV EBX,dword ptr [EBP + -0x4c]
PUSH EAX
LEA EAX,[EBX + 0xffe9bc34]
PUSH EAX
LEA EAX,[EBX + 0xffe5e26d]
PUSH 0x5c
PUSH EAX
CALL 0x002446e0
MOV EBX,dword ptr [EBP + -0x4c]
PUSH EDX
LEA EAX,[EBX + 0xffe9bc80]
PUSH EAX
LEA EAX,[EBX + 0xffe6335d]
PUSH 0x231
PUSH EAX
CALL 0x002446e0
MOV EBX,dword ptr [EBP + -0x4c]
PUSH ECX
LEA EAX,[EBX + 0xffe9bb88]
PUSH EAX
LEA EAX,[EBX + 0xffe634b4]
PUSH 0xc0
PUSH EAX
CALL 0x002446e0
MOV EBX,dword ptr [EBP + -0x4c]
PUSH ESI
LEA EAX,[EBX + 0xffe9bc68]
PUSH EAX
LEA EAX,[EBX + 0xffe633e0]
PUSH 0xa1
PUSH EAX
CALL 0x002446e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_0022be00(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,int param_5,\n                 undefined4 param_6)\n\n{\n  undefined4 *puVar1;\n  undefined **ppuVar2;\n  undefined4 uVar3;\n  ulonglong uVar4;\n  ulonglong uVar5;\n  longlong lVar6;\n  uint uVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint extraout_ECX;\n  undefined4 **ppuVar12;\n  uint uVar13;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  undefined4 *puStack_60;\n  uint local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined **local_50;\n  undefined8 local_4c;\n  undefined8 local_44;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_50 = &__DT_PLTGOT;\n  puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n  if (puVar1 == (undefined4 *)0x0) {\n    puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)((int)puVar1 + 0x52d9) == '\0') {\n    puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }\n  if ((*(byte *)(param_4 + 0xb) & 8) == 0) {\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }\n  else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }\n  local_54 = param_4[3];\n  if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    /* try { // try from 0022beb2 to 0022befd has its CatchHandler @ 0022c34d */\n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */\n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    /* WARNING: Subroutine does not return */\n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }\n  puStack_60 = param_4;\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);\n}\n\n" comment (function_definition "void FUN_0022be00(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,int param_5,\n                 undefined4 param_6)\n\n{\n  undefined4 *puVar1;\n  undefined **ppuVar2;\n  undefined4 uVar3;\n  ulonglong uVar4;\n  ulonglong uVar5;\n  longlong lVar6;\n  uint uVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint extraout_ECX;\n  undefined4 **ppuVar12;\n  uint uVar13;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  undefined4 *puStack_60;\n  uint local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined **local_50;\n  undefined8 local_4c;\n  undefined8 local_44;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_50 = &__DT_PLTGOT;\n  puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n  if (puVar1 == (undefined4 *)0x0) {\n    puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)((int)puVar1 + 0x52d9) == '\0') {\n    puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }\n  if ((*(byte *)(param_4 + 0xb) & 8) == 0) {\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }\n  else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }\n  local_54 = param_4[3];\n  if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    /* try { // try from 0022beb2 to 0022befd has its CatchHandler @ 0022c34d */\n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */\n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    /* WARNING: Subroutine does not return */\n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }\n  puStack_60 = param_4;\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);\n}" primitive_type (function_declarator "FUN_0022be00(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,int param_5,\n                 undefined4 param_6)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,int param_5,\n                 undefined4 param_6)" ( (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 "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined **ppuVar2;\n  undefined4 uVar3;\n  ulonglong uVar4;\n  ulonglong uVar5;\n  longlong lVar6;\n  uint uVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint extraout_ECX;\n  undefined4 **ppuVar12;\n  uint uVar13;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  undefined4 *puStack_60;\n  uint local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined **local_50;\n  undefined8 local_4c;\n  undefined8 local_44;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_50 = &__DT_PLTGOT;\n  puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n  if (puVar1 == (undefined4 *)0x0) {\n    puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)((int)puVar1 + 0x52d9) == '\0') {\n    puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }\n  if ((*(byte *)(param_4 + 0xb) & 8) == 0) {\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }\n  else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }\n  local_54 = param_4[3];\n  if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    /* try { // try from 0022beb2 to 0022befd has its CatchHandler @ 0022c34d */\n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */\n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    /* WARNING: Subroutine does not return */\n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }\n  puStack_60 = param_4;\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined **ppuVar2;" type_identifier (pointer_declarator "**ppuVar2" * (pointer_declarator "*ppuVar2" * identifier)) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "ulonglong uVar5;" type_identifier identifier ;) (declaration "longlong lVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "undefined4 **ppuVar12;" type_identifier (pointer_declarator "**ppuVar12" * (pointer_declarator "*ppuVar12" * identifier)) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "undefined4 *puStack_60;" type_identifier (pointer_declarator "*puStack_60" * identifier) ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined **local_50;" type_identifier (pointer_declarator "**local_50" * (pointer_declarator "*local_50" * identifier)) ;) (declaration "undefined8 local_4c;" type_identifier identifier ;) (declaration "undefined8 local_44;" type_identifier identifier ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "local_50 = &__DT_PLTGOT;" (assignment_expression "local_50 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);" (assignment_expression "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8)" identifier = (pointer_expression "*(undefined4 **)(DAT_005ea7c8 + 8)" * (cast_expression "(undefined4 **)(DAT_005ea7c8 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_005ea7c8 + 8)" ( (binary_expression "DAT_005ea7c8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 == (undefined4 *)0x0) {\n    puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" ( (binary_expression "puVar1 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }" { (expression_statement "puStack_60 = puVar1;" (assignment_expression "puStack_60 = puVar1" identifier = identifier) ;) comment (expression_statement "FUN_002446e0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_002446e0("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)((int)puVar1 + 0x52d9) == '\0') {\n    puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }" if (parenthesized_expression "(*(char *)((int)puVar1 + 0x52d9) == '\0')" ( (binary_expression "*(char *)((int)puVar1 + 0x52d9) == '\0'" (pointer_expression "*(char *)((int)puVar1 + 0x52d9)" * (cast_expression "(char *)((int)puVar1 + 0x52d9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + 0x52d9)" ( (binary_expression "(int)puVar1 + 0x52d9" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }" { (expression_statement "puStack_60 = puVar1;" (assignment_expression "puStack_60 = puVar1" identifier = identifier) ;) comment (expression_statement "FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");" (call_expression "FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc")" identifier (argument_list "("../../gold/copy-relocs.cc",0x76,"make_copy_reloc")" ( (string_literal ""../../gold/copy-relocs.cc"" " string_content ") , number_literal , (string_literal ""make_copy_reloc"" " string_content ") ))) ;) })) (if_statement "if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }" if (parenthesized_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0))" ( (binary_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)" (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(byte *)(param_4[2] + 0x2c) & 1) == 0)" ( (binary_expression "(*(byte *)(param_4[2] + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(param_4[2] + 0x2c) & 1)" ( (binary_expression "*(byte *)(param_4[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" * (cast_expression "(byte *)(param_4[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 0x2c)" ( (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }" { comment (expression_statement "FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");" (call_expression "FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc")" identifier (argument_list "("../../gold/copy-relocs.cc",0x78,"make_copy_reloc")" ( (string_literal ""../../gold/copy-relocs.cc"" " string_content ") , number_literal , (string_literal ""make_copy_reloc"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(param_4 + 0xb) & 8) == 0) {\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }\n  else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 8) == 0)" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 8)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 8" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }" { (expression_statement "local_58 = param_4[0xf];" (assignment_expression "local_58 = param_4[0xf]" identifier = (subscript_expression "param_4[0xf]" identifier [ number_literal ])) ;) (expression_statement "local_5c = param_4[0xe];" (assignment_expression "local_5c = param_4[0xe]" identifier = (subscript_expression "param_4[0xe]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }" else (compound_statement "{\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }" { (expression_statement "local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);" (assignment_expression "local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4)" (field_expression "local_4c._0_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 **)(param_4[2] + 4)" * (cast_expression "(undefined4 **)(param_4[2] + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4[2] + 4)" ( (binary_expression "param_4[2] + 4" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "local_44._0_4_ = (int *)*param_4;" (assignment_expression "local_44._0_4_ = (int *)*param_4" (field_expression "local_44._0_4_" identifier . field_identifier) = (cast_expression "(int *)*param_4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "uVar3 = *(undefined4 *)(param_5 + 4);" (assignment_expression "uVar3 = *(undefined4 *)(param_5 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_5 + 4)" * (cast_expression "(undefined4 *)(param_5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 4)" ( (binary_expression "param_5 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");" (assignment_expression "uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s")" identifier = (call_expression "gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s")" identifier (argument_list "("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s")" ( (string_literal ""%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"" " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement "puStack_60 = (undefined4 *)local_4c;" (assignment_expression "puStack_60 = (undefined4 *)local_4c" identifier = (cast_expression "(undefined4 *)local_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "FUN_0023b810(uVar10,uVar3,(int *)local_44);" (call_expression "FUN_0023b810(uVar10,uVar3,(int *)local_44)" identifier (argument_list "(uVar10,uVar3,(int *)local_44)" ( identifier , identifier , (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "local_58 = param_4[0xf];" (assignment_expression "local_58 = param_4[0xf]" identifier = (subscript_expression "param_4[0xf]" identifier [ number_literal ])) ;) (expression_statement "local_5c = param_4[0xe];" (assignment_expression "local_5c = param_4[0xe]" identifier = (subscript_expression "param_4[0xe]" identifier [ number_literal ])) ;) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      puStack_60 = param_4;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }" { (expression_statement "puStack_60 = param_4;" (assignment_expression "puStack_60 = param_4" identifier = identifier) ;) comment (expression_statement "FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);" (call_expression "FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1)" identifier (argument_list "(local_50 + -0x67308,0xaa,local_50 + -0x590f1)" ( (binary_expression "local_50 + -0x67308" identifier + number_literal) , number_literal , (binary_expression "local_50 + -0x590f1" identifier + number_literal) ))) ;) })) }))) (expression_statement "local_54 = param_4[3];" (assignment_expression "local_54 = param_4[3]" identifier = (subscript_expression "param_4[3]" identifier [ number_literal ])) ;) (if_statement "if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    /* try { // try from 0022beb2 to 0022befd has its CatchHandler @ 0022c34d */\n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */\n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    /* WARNING: Subroutine does not return */\n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)((int)param_4 + 0x2b) & 0x20" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    /* try { // try from 0022beb2 to 0022befd has its CatchHandler @ 0022c34d */\n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */\n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    /* WARNING: Subroutine does not return */\n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }" { (expression_statement "local_44._0_4_ = (int *)param_4[2];" (assignment_expression "local_44._0_4_ = (int *)param_4[2]" (field_expression "local_44._0_4_" identifier . field_identifier) = (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) (if_statement "if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }" if (parenthesized_expression "(((int *)local_44)[7] != 0)" ( (binary_expression "((int *)local_44)[7] != 0" (subscript_expression "((int *)local_44)[7]" (parenthesized_expression "((int *)local_44)" ( (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) != number_literal) )) (compound_statement "{\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }" { (expression_statement "FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);" (call_expression "FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff)" identifier (argument_list "(((int *)local_44)[7] + 0x1c,0xffffffff)" ( (binary_expression "((int *)local_44)[7] + 0x1c" (subscript_expression "((int *)local_44)[7]" (parenthesized_expression "((int *)local_44)" ( (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) + number_literal) , number_literal ))) ;) })) comment (expression_statement "local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);" (assignment_expression "local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54)" identifier = (call_expression "(**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54)" (parenthesized_expression "(**(code **)(*(int *)local_44 + 0x5c))" ( (pointer_expression "**(code **)(*(int *)local_44 + 0x5c)" * (pointer_expression "*(code **)(*(int *)local_44 + 0x5c)" * (cast_expression "(code **)(*(int *)local_44 + 0x5c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_44 + 0x5c)" ( (binary_expression "*(int *)local_44 + 0x5c" (pointer_expression "*(int *)local_44" * (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "((int *)local_44,local_54)" ( (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "piVar11 = (int *)local_44;" (assignment_expression "piVar11 = (int *)local_44" identifier = (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);" (assignment_expression "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8)" identifier = (pointer_expression "*(undefined4 **)(DAT_005ea7c8 + 8)" * (cast_expression "(undefined4 **)(DAT_005ea7c8 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_005ea7c8 + 8)" ( (binary_expression "DAT_005ea7c8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */\n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }" if (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" ( (binary_expression "puVar1 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puStack_60 = puVar1;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */\n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }" { (expression_statement "puStack_60 = puVar1;" (assignment_expression "puStack_60 = puVar1" identifier = identifier) ;) comment comment (expression_statement "FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);" (call_expression "FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3)" identifier (argument_list "((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3)" ( (binary_expression "(int)local_50 + -0x1a1d93" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , (binary_expression "local_50 + -0x590f3" identifier + number_literal) ))) ;) })) (expression_statement "uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);" (assignment_expression "uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9)" identifier = (binary_expression "(uint)*(byte *)((int)puVar1 + 0x56b9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar1 + 0x56b9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + 0x56b9)" ( (binary_expression "(int)puVar1 + 0x56b9" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "ppuVar12 = (undefined4 **)&local_5c;" (assignment_expression "ppuVar12 = (undefined4 **)&local_5c" identifier = (cast_expression "(undefined4 **)&local_5c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_5c" & identifier))) ;) (if_statement "if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }" if (parenthesized_expression "(*(byte *)((int)puVar1 + 0x56b9) != 0)" ( (binary_expression "*(byte *)((int)puVar1 + 0x56b9) != 0" (pointer_expression "*(byte *)((int)puVar1 + 0x56b9)" * (cast_expression "(byte *)((int)puVar1 + 0x56b9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + 0x56b9)" ( (binary_expression "(int)puVar1 + 0x56b9" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }" { (expression_statement "uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);" (assignment_expression "uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54)" identifier = (call_expression "(**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54)" (parenthesized_expression "(**(code **)(*(int *)local_44 + 0x44))" ( (pointer_expression "**(code **)(*(int *)local_44 + 0x44)" * (pointer_expression "*(code **)(*(int *)local_44 + 0x44)" * (cast_expression "(code **)(*(int *)local_44 + 0x44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_44 + 0x44)" ( (binary_expression "*(int *)local_44 + 0x44" (pointer_expression "*(int *)local_44" * (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "((int *)local_44,local_54)" ( (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "ppuVar12 = (undefined4 **)&local_5c;" (assignment_expression "ppuVar12 = (undefined4 **)&local_5c" identifier = (cast_expression "(undefined4 **)&local_5c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_5c" & identifier))) ;) (if_statement "if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }" if (parenthesized_expression "((uVar7 & 1) != 0)" ( (binary_expression "(uVar7 & 1) != 0" (parenthesized_expression "(uVar7 & 1)" ( (binary_expression "uVar7 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }" { (expression_statement "(**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);" (call_expression "(**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54)" (parenthesized_expression "(**(code **)(*piVar11 + 0x40))" ( (pointer_expression "**(code **)(*piVar11 + 0x40)" * (pointer_expression "*(code **)(*piVar11 + 0x40)" * (cast_expression "(code **)(*piVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar11 + 0x40)" ( (binary_expression "*piVar11 + 0x40" (pointer_expression "*piVar11" * identifier) + number_literal) ))))) )) (argument_list "(local_34,piVar11,local_54)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);" (assignment_expression "iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de)" identifier = (call_expression "FUN_003b8640(local_34,(int)local_50 + -0x1645de)" identifier (argument_list "(local_34,(int)local_50 + -0x1645de)" ( identifier , (binary_expression "(int)local_50 + -0x1645de" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = local_2c;" (assignment_expression "puVar9 = local_2c" identifier = identifier) ;) (if_statement "if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }" if (parenthesized_expression "(local_34[0] != puVar9)" ( (binary_expression "local_34[0] != puVar9" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }" { (expression_statement "puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);" (assignment_expression "puVar9 = (undefined1 *)FUN_003ae080(local_34[0])" identifier = (cast_expression "(undefined1 *)FUN_003ae080(local_34[0])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ae080(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))))) ;) })) (expression_statement "ppuVar12 = &puStack_60;" (assignment_expression "ppuVar12 = &puStack_60" identifier = (pointer_expression "&puStack_60" & identifier)) ;) (expression_statement "uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);" (assignment_expression "uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0)" identifier = (call_expression "CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0)" identifier (argument_list "((int3)((uint)puVar9 >> 8),iVar8 == 0)" ( (call_expression "(int3)((uint)puVar9 >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)puVar9 >> 8)" ( (binary_expression "(uint)puVar9 >> 8" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) , (binary_expression "iVar8 == 0" identifier == number_literal) )))) ;) })) })) (expression_statement "iVar8 = ((int *)local_44)[7];" (assignment_expression "iVar8 = ((int *)local_44)[7]" identifier = (subscript_expression "((int *)local_44)[7]" (parenthesized_expression "((int *)local_44)" ( (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ])) ;) (if_statement "if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }" { (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;" (assignment_expression "*(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c" (pointer_expression "*(int *)((int)ppuVar12 + -0x10)" * (cast_expression "(int *)((int)ppuVar12 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar8 + 0x1c" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0023dd30();" (call_expression "FUN_0023dd30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "ppuVar2 = local_50;" (assignment_expression "ppuVar2 = local_50" identifier = identifier) ;) (expression_statement "local_44 = local_4c - 1;" (assignment_expression "local_44 = local_4c - 1" identifier = (binary_expression "local_4c - 1" identifier - number_literal)) ;) (if_statement "if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }" if (parenthesized_expression "(((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0)" ( (binary_expression "((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0" (binary_expression "((uint)(local_44 >> 0x20) & param_4[0xd]) != 0" (parenthesized_expression "((uint)(local_44 >> 0x20) & param_4[0xd])" ( (binary_expression "(uint)(local_44 >> 0x20) & param_4[0xd]" (call_expression "(uint)(local_44 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 >> 0x20)" ( (binary_expression "local_44 >> 0x20" identifier >> number_literal) ))) & (subscript_expression "param_4[0xd]" identifier [ number_literal ])) )) != number_literal) || (binary_expression "((uint)local_44 & param_4[0xc]) != 0" (parenthesized_expression "((uint)local_44 & param_4[0xc])" ( (binary_expression "(uint)local_44 & param_4[0xc]" (cast_expression "(uint)local_44" ( (type_descriptor "uint" type_identifier) ) identifier) & (subscript_expression "param_4[0xc]" identifier [ number_literal ])) )) != number_literal)) )) (compound_statement "{\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }" { (do_statement "do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);" do (compound_statement "{\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      }" { (expression_statement "uVar4 = local_4c >> 1;" (assignment_expression "uVar4 = local_4c >> 1" identifier = (binary_expression "local_4c >> 1" identifier >> number_literal)) ;) (expression_statement "local_4c = local_4c >> 1;" (assignment_expression "local_4c = local_4c >> 1" identifier = (binary_expression "local_4c >> 1" identifier >> number_literal)) ;) (expression_statement "lVar6 = uVar4 - 1;" (assignment_expression "lVar6 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (expression_statement "local_44 = local_4c;" (assignment_expression "local_44 = local_4c" identifier = identifier) ;) }) while (parenthesized_expression "(((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0)" ( (binary_expression "((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0" (binary_expression "((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0" (parenthesized_expression "((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd])" ( (binary_expression "(uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]" (call_expression "(uint)((ulonglong)lVar6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) & (subscript_expression "param_4[0xd]" identifier [ number_literal ])) )) != number_literal) || (binary_expression "((uint)lVar6 & param_4[0xc]) != 0" (parenthesized_expression "((uint)lVar6 & param_4[0xc])" ( (binary_expression "(uint)lVar6 & param_4[0xc]" (cast_expression "(uint)lVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & (subscript_expression "param_4[0xc]" identifier [ number_literal ])) )) != number_literal)) )) ;) })) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }" { (expression_statement "*(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;" (assignment_expression "*(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" * (cast_expression "(byte *)(param_4[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 0x2c)" ( (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "*(byte *)(param_4[2] + 0x2c) | 2" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" * (cast_expression "(byte *)(param_4[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 0x2c)" ( (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) )))) | number_literal)) ;) (if_statement "if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }" if (parenthesized_expression "((char)uVar13 == '\0')" ( (binary_expression "(char)uVar13 == '\0'" (cast_expression "(char)uVar13" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }" { (expression_statement "piVar11 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }" if (parenthesized_expression "(piVar11 == (int *)0x0)" ( (binary_expression "piVar11 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }" { (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "piVar11 = (int *)FUN_003ac4d0();" (assignment_expression "piVar11 = (int *)FUN_003ac4d0()" identifier = (cast_expression "(int *)FUN_003ac4d0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ac4d0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar11[1] = 0;" (assignment_expression "piVar11[1] = 0" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar11 = (int)(ppuVar2 + -0x384c);" (assignment_expression "*piVar11 = (int)(ppuVar2 + -0x384c)" (pointer_expression "*piVar11" * identifier) = (cast_expression "(int)(ppuVar2 + -0x384c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ppuVar2 + -0x384c)" ( (binary_expression "ppuVar2 + -0x384c" identifier + number_literal) )))) ;) (expression_statement "*(ulonglong *)(piVar11 + 9) = local_4c;" (assignment_expression "*(ulonglong *)(piVar11 + 9) = local_4c" (pointer_expression "*(ulonglong *)(piVar11 + 9)" * (cast_expression "(ulonglong *)(piVar11 + 9)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 9)" ( (binary_expression "piVar11 + 9" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[3] = 0;" (assignment_expression "piVar11[3] = 0" (subscript_expression "piVar11[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[4] = 0;" (assignment_expression "piVar11[4] = 0" (subscript_expression "piVar11[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[5] = -1;" (assignment_expression "piVar11[5] = -1" (subscript_expression "piVar11[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[6] = -1;" (assignment_expression "piVar11[6] = -1" (subscript_expression "piVar11[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" * (cast_expression "(byte *)(piVar11 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 7)" ( (binary_expression "piVar11 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" * (cast_expression "(byte *)(piVar11 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 7)" ( (binary_expression "piVar11 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar11[8] = 0;" (assignment_expression "piVar11[8] = 0" (subscript_expression "piVar11[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[0xb] = (int)ppuVar2 + -0x1645c5;" (assignment_expression "piVar11[0xb] = (int)ppuVar2 + -0x1645c5" (subscript_expression "piVar11[0xb]" identifier [ number_literal ]) = (binary_expression "(int)ppuVar2 + -0x1645c5" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(int **)(param_1 + 0x10) = piVar11;" (assignment_expression "*(int **)(param_1 + 0x10) = piVar11" (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -4) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -4)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -4)" ( (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -8) = 0x1b;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -8) = 0x1b" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -8)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)((int)ppuVar12 + -0xc) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0xc) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0xc)" * (cast_expression "(int **)((int)ppuVar12 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x18) = 8;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x18) = 8" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x18)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x18)" ( (binary_expression "(int)ppuVar12 + -0x18" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;" (assignment_expression "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb" (pointer_expression "*(int *)((int)ppuVar12 + -0x1c)" * (cast_expression "(int *)((int)ppuVar12 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x1c)" ( (binary_expression "(int)ppuVar12 + -0x1c" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)ppuVar2 + -0x1645bb" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x20)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x20)" ( (binary_expression "(int)ppuVar12 + -0x20" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x24)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x24)" ( (binary_expression "(int)ppuVar12 + -0x24" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0027afd0();" (call_expression "FUN_0027afd0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar11 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) })) }) (else_clause "else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }" else (compound_statement "{\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }" { (expression_statement "piVar11 = *(int **)(param_1 + 0x14);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x14)" identifier = (pointer_expression "*(int **)(param_1 + 0x14)" * (cast_expression "(int **)(param_1 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }" if (parenthesized_expression "(piVar11 == (int *)0x0)" ( (binary_expression "piVar11 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }" { (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "piVar11 = (int *)FUN_003ac4d0();" (assignment_expression "piVar11 = (int *)FUN_003ac4d0()" identifier = (cast_expression "(int *)FUN_003ac4d0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ac4d0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar11[1] = 0;" (assignment_expression "piVar11[1] = 0" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar11 = (int)(ppuVar2 + -0x384c);" (assignment_expression "*piVar11 = (int)(ppuVar2 + -0x384c)" (pointer_expression "*piVar11" * identifier) = (cast_expression "(int)(ppuVar2 + -0x384c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ppuVar2 + -0x384c)" ( (binary_expression "ppuVar2 + -0x384c" identifier + number_literal) )))) ;) (expression_statement "*(ulonglong *)(piVar11 + 9) = local_4c;" (assignment_expression "*(ulonglong *)(piVar11 + 9) = local_4c" (pointer_expression "*(ulonglong *)(piVar11 + 9)" * (cast_expression "(ulonglong *)(piVar11 + 9)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 9)" ( (binary_expression "piVar11 + 9" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[3] = 0;" (assignment_expression "piVar11[3] = 0" (subscript_expression "piVar11[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[4] = 0;" (assignment_expression "piVar11[4] = 0" (subscript_expression "piVar11[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[5] = -1;" (assignment_expression "piVar11[5] = -1" (subscript_expression "piVar11[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[6] = -1;" (assignment_expression "piVar11[6] = -1" (subscript_expression "piVar11[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" * (cast_expression "(byte *)(piVar11 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 7)" ( (binary_expression "piVar11 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" * (cast_expression "(byte *)(piVar11 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 7)" ( (binary_expression "piVar11 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar11[8] = 0;" (assignment_expression "piVar11[8] = 0" (subscript_expression "piVar11[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[0xb] = (int)ppuVar2 + -0x1645d1;" (assignment_expression "piVar11[0xb] = (int)ppuVar2 + -0x1645d1" (subscript_expression "piVar11[0xb]" identifier [ number_literal ]) = (binary_expression "(int)ppuVar2 + -0x1645d1" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(int **)(param_1 + 0x14) = piVar11;" (assignment_expression "*(int **)(param_1 + 0x14) = piVar11" (pointer_expression "*(int **)(param_1 + 0x14)" * (cast_expression "(int **)(param_1 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -4) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -4)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -4)" ( (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -8) = 0x13;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -8) = 0x13" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -8)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)((int)ppuVar12 + -0xc) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0xc) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0xc)" * (cast_expression "(int **)((int)ppuVar12 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x18) = 1;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x18) = 1" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x18)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x18)" ( (binary_expression "(int)ppuVar12 + -0x18" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;" (assignment_expression "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de" (pointer_expression "*(int *)((int)ppuVar12 + -0x1c)" * (cast_expression "(int *)((int)ppuVar12 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x1c)" ( (binary_expression "(int)ppuVar12 + -0x1c" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)ppuVar2 + -0x1645de" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x20)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x20)" ( (binary_expression "(int)ppuVar12 + -0x20" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x24)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x24)" ( (binary_expression "(int)ppuVar12 + -0x24" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0027afd0();" (call_expression "FUN_0027afd0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar11 = *(int **)(param_1 + 0x14);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x14)" identifier = (pointer_expression "*(int **)(param_1 + 0x14)" * (cast_expression "(int **)(param_1 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) })) }))) (expression_statement "ppuVar2 = *(undefined ***)(*piVar11 + 0xc);" (assignment_expression "ppuVar2 = *(undefined ***)(*piVar11 + 0xc)" identifier = (pointer_expression "*(undefined ***)(*piVar11 + 0xc)" * (cast_expression "(undefined ***)(*piVar11 + 0xc)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(*piVar11 + 0xc)" ( (binary_expression "*piVar11 + 0xc" (pointer_expression "*piVar11" * identifier) + number_literal) ))))) ;) (if_statement "if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }" if (parenthesized_expression "(ppuVar2 == local_50 + -0x15e484)" ( (binary_expression "ppuVar2 == local_50 + -0x15e484" identifier == (binary_expression "local_50 + -0x15e484" identifier + number_literal)) )) (compound_statement "{\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }" { (expression_statement "uVar16 = *(undefined8 *)(piVar11 + 9);" (assignment_expression "uVar16 = *(undefined8 *)(piVar11 + 9)" identifier = (pointer_expression "*(undefined8 *)(piVar11 + 9)" * (cast_expression "(undefined8 *)(piVar11 + 9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 9)" ( (binary_expression "piVar11 + 9" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = local_4c;" (assignment_expression "uVar4 = local_4c" identifier = identifier) ;) }) (else_clause "else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }" else (compound_statement "{\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }" { (expression_statement "*(int **)((int)ppuVar12 + -0x10) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0x10) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0x10)" * (cast_expression "(int **)((int)ppuVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar16 = (*(code *)ppuVar2)();" (assignment_expression "uVar16 = (*(code *)ppuVar2)()" identifier = (call_expression "(*(code *)ppuVar2)()" (parenthesized_expression "(*(code *)ppuVar2)" ( (pointer_expression "*(code *)ppuVar2" * (cast_expression "(code *)ppuVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "uVar4 = local_4c;" (assignment_expression "uVar4 = local_4c" identifier = identifier) ;) }))) (expression_statement "uVar13 = (uint)((ulonglong)uVar16 >> 0x20);" (assignment_expression "uVar13 = (uint)((ulonglong)uVar16 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar16 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_4c._4_4_ = (uint)(uVar4 >> 0x20);" (assignment_expression "local_4c._4_4_ = (uint)(uVar4 >> 0x20)" (field_expression "local_4c._4_4_" identifier . field_identifier) = (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_4c._0_4_ = (undefined4 *)uVar4;" (assignment_expression "local_4c._0_4_ = (undefined4 *)uVar4" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(undefined4 *)uVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar14 = (uint)uVar16 < (undefined4 *)local_4c;" (assignment_expression "bVar14 = (uint)uVar16 < (undefined4 *)local_4c" identifier = (binary_expression "(uint)uVar16 < (undefined4 *)local_4c" (cast_expression "(uint)uVar16" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(undefined4 *)local_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "bVar15 = uVar13 < local_4c._4_4_;" (assignment_expression "bVar15 = uVar13 < local_4c._4_4_" identifier = (binary_expression "uVar13 < local_4c._4_4_" identifier < (field_expression "local_4c._4_4_" identifier . field_identifier))) ;) (expression_statement "uVar13 = uVar13 - local_4c._4_4_;" (assignment_expression "uVar13 = uVar13 - local_4c._4_4_" identifier = (binary_expression "uVar13 - local_4c._4_4_" identifier - (field_expression "local_4c._4_4_" identifier . field_identifier))) ;) (expression_statement "uVar7 = (uint)(undefined4 *)local_4c;" (assignment_expression "uVar7 = (uint)(undefined4 *)local_4c" identifier = (cast_expression "(uint)(undefined4 *)local_4c" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(undefined4 *)local_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_4c = uVar4;" (assignment_expression "local_4c = uVar4" identifier = identifier) ;) (expression_statement "uVar5 = local_44;" (assignment_expression "uVar5 = local_44" identifier = identifier) ;) (if_statement "if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }" if (parenthesized_expression "(bVar15 || uVar13 < bVar14)" ( (binary_expression "bVar15 || uVar13 < bVar14" identifier || (binary_expression "uVar13 < bVar14" identifier < identifier)) )) (compound_statement "{\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }" { (expression_statement "*(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;" (assignment_expression "*(ulonglong *)((int)ppuVar12 + -0xc) = uVar4" (pointer_expression "*(ulonglong *)((int)ppuVar12 + -0xc)" * (cast_expression "(ulonglong *)((int)ppuVar12 + -0xc)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)ppuVar12 + -0x10) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0x10) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0x10)" * (cast_expression "(int **)((int)ppuVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002c5f50();" (call_expression "FUN_002c5f50()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar7 = extraout_ECX;" (assignment_expression "uVar7 = extraout_ECX" identifier = identifier) ;) (expression_statement "uVar5 = local_44;" (assignment_expression "uVar5 = local_44" identifier = identifier) ;) })) (expression_statement "local_44._0_4_ = (int *)piVar11[3];" (assignment_expression "local_44._0_4_ = (int *)piVar11[3]" (field_expression "local_44._0_4_" identifier . field_identifier) = (cast_expression "(int *)piVar11[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[3]" identifier [ number_literal ]))) ;) (if_statement "if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }" if (parenthesized_expression "(piVar11[4] == 0)" ( (binary_expression "piVar11[4] == 0" (subscript_expression "piVar11[4]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }" { (expression_statement "local_44._4_4_ = 0;" (assignment_expression "local_44._4_4_ = 0" (field_expression "local_44._4_4_" identifier . field_identifier) = number_literal) ;) (if_statement "if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (compound_statement "{\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }" { (expression_statement "local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);" (assignment_expression "local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44)" (field_expression "local_44._0_4_" identifier . field_identifier) = (cast_expression "(int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44)" ( (binary_expression "-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44" (unary_expression "-(int)(undefined4 *)local_4c" - (cast_expression "(int)(undefined4 *)local_4c" ( (type_descriptor "int" primitive_type) ) (cast_expression "(undefined4 *)local_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) & (binary_expression "(int)(undefined4 *)local_4c + -1 + (int)(int *)local_44" (binary_expression "(int)(undefined4 *)local_4c + -1" (cast_expression "(int)(undefined4 *)local_4c" ( (type_descriptor "int" primitive_type) ) (cast_expression "(undefined4 *)local_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) + (cast_expression "(int)(int *)local_44" ( (type_descriptor "int" primitive_type) ) (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) )))) ;) })) (expression_statement "iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);" (assignment_expression "iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44)" identifier = (binary_expression "local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44)" identifier + (cast_expression "(uint)CARRY4(local_5c,(uint)(int *)local_44)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_5c,(uint)(int *)local_44)" identifier (argument_list "(local_5c,(uint)(int *)local_44)" ( identifier , (cast_expression "(uint)(int *)local_44" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) )))))) ;) (if_statement "if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }" if (parenthesized_expression "((*(byte *)(piVar11 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(piVar11 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(piVar11 + 7) & 2)" ( (binary_expression "*(byte *)(piVar11 + 7) & 2" (pointer_expression "*(byte *)(piVar11 + 7)" * (cast_expression "(byte *)(piVar11 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 7)" ( (binary_expression "piVar11 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }" { (expression_statement "piVar11[3] = local_5c + (int)(int *)local_44;" (assignment_expression "piVar11[3] = local_5c + (int)(int *)local_44" (subscript_expression "piVar11[3]" identifier [ number_literal ]) = (binary_expression "local_5c + (int)(int *)local_44" identifier + (cast_expression "(int)(int *)local_44" ( (type_descriptor "int" primitive_type) ) (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "piVar11[4] = iVar8;" (assignment_expression "piVar11[4] = iVar8" (subscript_expression "piVar11[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -8) = param_6;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -8) = param_6" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -8)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)((int)ppuVar12 + -0x10) = (int *)local_44;" (assignment_expression "*(int **)((int)ppuVar12 + -0x10) = (int *)local_44" (pointer_expression "*(int **)((int)ppuVar12 + -0x10)" * (cast_expression "(int **)((int)ppuVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(int **)((int)ppuVar12 + -0x14) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0x14) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0x14)" * (cast_expression "(int **)((int)ppuVar12 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)ppuVar12 + -0x18) = param_4;" (assignment_expression "*(undefined4 **)((int)ppuVar12 + -0x18) = param_4" (pointer_expression "*(undefined4 **)((int)ppuVar12 + -0x18)" * (cast_expression "(undefined4 **)((int)ppuVar12 + -0x18)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x18)" ( (binary_expression "(int)ppuVar12 + -0x18" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x1c) = param_2" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x1c)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x1c)" ( (binary_expression "(int)ppuVar12 + -0x1c" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)ppuVar12 + -0x20) = param_1;" (assignment_expression "*(int *)((int)ppuVar12 + -0x20) = param_1" (pointer_expression "*(int *)((int)ppuVar12 + -0x20)" * (cast_expression "(int *)((int)ppuVar12 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x20)" ( (binary_expression "(int)ppuVar12 + -0x20" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x24)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x24)" ( (binary_expression "(int)ppuVar12 + -0x24" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0022bc40();" (call_expression "FUN_0022bc40()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "*(int *)((int)ppuVar12 + -4) = iVar8;" (assignment_expression "*(int *)((int)ppuVar12 + -4) = iVar8" (pointer_expression "*(int *)((int)ppuVar12 + -4)" * (cast_expression "(int *)((int)ppuVar12 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -4)" ( (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0" (pointer_expression "*(undefined ***)((int)ppuVar12 + -8)" * (cast_expression "(undefined ***)((int)ppuVar12 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x590e0" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0x231" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;" (assignment_expression "*(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3" (pointer_expression "*(int *)((int)ppuVar12 + -0x10)" * (cast_expression "(int *)((int)ppuVar12 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)local_50 + -0x19cca3" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) comment (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(uint *)((int)ppuVar12 + -4) = uVar7;" (assignment_expression "*(uint *)((int)ppuVar12 + -4) = uVar7" (pointer_expression "*(uint *)((int)ppuVar12 + -4)" * (cast_expression "(uint *)((int)ppuVar12 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -4)" ( (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e" (pointer_expression "*(undefined ***)((int)ppuVar12 + -8)" * (cast_expression "(undefined ***)((int)ppuVar12 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x5911e" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3" (pointer_expression "*(undefined ***)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined ***)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x672d3" identifier + number_literal)) ;) comment (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_44 = uVar5;" (assignment_expression "local_44 = uVar5" identifier = identifier) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(uint *)((int)ppuVar12 + -4) = uVar13;" (assignment_expression "*(uint *)((int)ppuVar12 + -4) = uVar13" (pointer_expression "*(uint *)((int)ppuVar12 + -4)" * (cast_expression "(uint *)((int)ppuVar12 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -4)" ( (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6" (pointer_expression "*(undefined ***)((int)ppuVar12 + -8)" * (cast_expression "(undefined ***)((int)ppuVar12 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x590e6" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308" (pointer_expression "*(undefined ***)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined ***)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x67308" identifier + number_literal)) ;) comment (expression_statement "*(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;" (assignment_expression "*(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d" (pointer_expression "*(undefined1 **)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined1 **)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&LAB_0022c34d" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puStack_60 = param_4;" (assignment_expression "puStack_60 = param_4" identifier = identifier) ;) comment (expression_statement "FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);" (call_expression "FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146)" identifier (argument_list "(local_50 + -0x5917e,0x8e,local_50 + -0x59146)" ( (binary_expression "local_50 + -0x5917e" identifier + number_literal) , number_literal , (binary_expression "local_50 + -0x59146" identifier + number_literal) ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original prototype: void make_copy_reloc(Copy_relocs<4,_64,_false> * this, Symbol_table *\n   symtab, Layout * layout, Sized_symbol<64> * sym, Sized_relobj_file<64,_false> * object,\n   Output_data_reloc<4,_true,_64,_false> * reloc_section) */\n\nvoid __thiscall\ngold::Copy_relocs<4,_64,_false>::make_copy_reloc\n          (Copy_relocs<4,_64,_false> *this,Symbol_table *symtab,Layout *layout,Sized_symbol<64> *sym\n          ,Sized_relobj_file<64,_false> *object,Output_data_reloc<4,_true,_64,_false> *reloc_section\n          )\n\n{\n  pointer *pppOVar1;\n  bool bVar2;\n  Output_segment *pOVar3;\n  Input_file *pIVar4;\n  uint uVar5;\n  undefined **ppuVar6;\n  pointer pcVar7;\n  Object *pOVar8;\n  uint uVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  char *format;\n  Output_data_space *pOVar12;\n  General_options *pGVar13;\n  uint extraout_ECX;\n  uint extraout_EDX;\n  General_options **ppGVar14;\n  uint uVar15;\n  uint64_t uVar16;\n  General_options *pGStack_60;\n  uint local_5c;\n  int local_58;\n  uint local_54;\n  undefined **local_50;\n  General_options *local_4c;\n  uint local_48;\n  Object *local_44;\n  uint local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_50 = &_GLOBAL_OFFSET_TABLE_;\n  pGVar13 = parameters->options_;\n  if (pGVar13 == (General_options *)0x0) {\n    pGStack_60 = pGVar13;\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((pGVar13->copyreloc_).value == false) {\n    pGStack_60 = pGVar13;\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }\n  if ((((sym->super_Symbol).field_0x2a & 7) != 0) ||\n     (pOVar3 = (sym->super_Symbol).u1_.output_segment,\n     ((uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_end_of_storage & 1) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }\n  if (((sym->super_Symbol).field_0x2c & 8) == 0) {\n    local_58 = *(int *)((int)&sym->symsize_ + 4);\n    local_5c = (uint)sym->symsize_;\n  }\n  else {\n    local_4c = (General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_finish;\n    local_44 = (Object *)(sym->super_Symbol).name_;\n    pcVar7 = (object->super_Sized_relobj<64,_false>).super_Relobj.super_Object.name_._M_dataplus.\n             _M_p;\n    format = (char *)gettext(\n                            "%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"\n                            );\n    pGStack_60 = local_4c;\n    gold_error(format,pcVar7,local_44);\n    local_58 = *(int *)((int)&sym->symsize_ + 4);\n    local_5c = (uint)sym->symsize_;\n    if (((sym->super_Symbol).field_0x2a & 7) != 0) {\n      pGStack_60 = (General_options *)sym;\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(local_50 + -0x67308),0xaa,(char *)(local_50 + -0x590f1));\n    }\n  }\n  local_54 = (sym->super_Symbol).u2_.shndx;\n  if (((sym->super_Symbol).field_0x2b & 0x20) == 0) {\n    pGStack_60 = (General_options *)sym;\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(local_50 + -0x5917e),0x8e,(char *)(local_50 + -0x59146));\n  }\n  local_44 = (sym->super_Symbol).u1_.object;\n  if (local_44->input_file_ != (Input_file *)0x0) {\n    File_read::lock(&local_44->input_file_->file_,(Task *)0xffffffff);\n  }\n                    /* try { // try from 0022beb2 to 0022befd has its CatchHandler @ 0022c34d */\n  local_4c = (General_options *)(*local_44->_vptr_Object[0x17])(local_44,local_54);\n  pOVar8 = local_44;\n  pGVar13 = parameters->options_;\n  if (pGVar13 == (General_options *)0x0) {\n    pGStack_60 = pGVar13;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */\n    do_gold_unreachable((char *)((int)local_50 + -0x1a1d93),0x5c,(char *)(local_50 + -0x590f3));\n  }\n  bVar2 = (pGVar13->relro_).value;\n  uVar15 = (uint)bVar2;\n  ppGVar14 = (General_options **)&local_5c;\n  local_48 = extraout_EDX;\n  if ((bVar2 != false) &&\n     (uVar9 = (*local_44->_vptr_Object[0x11])(local_44,local_54),\n     ppGVar14 = (General_options **)&local_5c, (uVar9 & 1) != 0)) {\n    (*pOVar8->_vptr_Object[0x10])(local_34,pOVar8,local_54);\n    iVar10 = std::string::compare((char *)local_34);\n    puVar11 = local_2c;\n    if (local_34[0] != puVar11) {\n      operator_delete(local_34[0]);\n    }\n    ppGVar14 = &pGStack_60;\n    uVar15 = CONCAT31((int3)((uint)puVar11 >> 8),iVar10 == 0);\n  }\n  pIVar4 = local_44->input_file_;\n  if (pIVar4 != (Input_file *)0x0) {\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xffffffff;\n    *(File_read **)((int)ppGVar14 + -0x10) = &pIVar4->file_;\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22bf4f;\n    File_read::unlock(*(File_read **)((int)ppGVar14 + -0x10),*(Task **)((int)ppGVar14 + -0xc));\n  }\n  ppuVar6 = local_50;\n  uVar9 = (uint)sym->value_;\n  uVar5 = *(uint *)((int)&sym->value_ + 4);\n  local_44 = (Object *)((int)local_4c - 1);\n  local_40 = (local_48 - 1) + (uint)(local_4c != (General_options *)0x0);\n  if ((local_40 & uVar5) != 0 || ((uint)local_44 & uVar9) != 0) {\n    local_44 = (Object *)local_4c;\n    local_40 = local_48;\n    do {\n      local_4c = (General_options *)((uint)local_44 >> 1 | local_40 << 0x1f);\n      local_48 = local_40 >> 1;\n      local_44 = (Object *)local_4c;\n      local_40 = local_48;\n    } while (((local_48 - 1) + (uint)(local_4c != (General_options *)0x0) & uVar5) != 0 ||\n             ((int)local_4c - 1U & uVar9) != 0);\n  }\n  if (((sym->super_Symbol).field_0x2a & 7) != 0) {\n    *(uint *)((int)ppGVar14 + -4) = uVar15;\n    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x67308;\n                    /* WARNING: Subroutine does not return */\n    *(undefined1 **)((int)ppGVar14 + -0x14) = &LAB_0022c34d;\n    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));\n  }\n  pppOVar1 = &((sym->super_Symbol).u1_.output_segment)->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage;\n  *(byte *)pppOVar1 = *(byte *)pppOVar1 | 2;\n  if ((char)uVar15 == '\0') {\n    pOVar12 = this->dynbss_;\n    if (pOVar12 == (Output_data_space *)0x0) {\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c14a;\n      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);\n      *(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;\n      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;\n      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;\n      *puVar11 = *puVar11 & 0xe0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;\n      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645c5);\n      this->dynbss_ = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -4) = 0;\n      *(undefined4 *)((int)ppGVar14 + -8) = 0x1b;\n      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;\n      *(undefined4 *)((int)ppGVar14 + -0x18) = 8;\n      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645bb;\n      *(Layout **)((int)ppGVar14 + -0x20) = layout;\n      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c1c1;\n      Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));\n      pOVar12 = this->dynbss_;\n    }\n  }\n  else {\n    pOVar12 = this->dynrelro_;\n    if (pOVar12 == (Output_data_space *)0x0) {\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c20d;\n      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);\n      *(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;\n      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;\n      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;\n      *puVar11 = *puVar11 & 0xe0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;\n      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645d1);\n      this->dynrelro_ = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -4) = 0;\n      *(undefined4 *)((int)ppGVar14 + -8) = 0x13;\n      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;\n      *(undefined4 *)((int)ppGVar14 + -0x18) = 1;\n      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645de;\n      *(Layout **)((int)ppGVar14 + -0x20) = layout;\n      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c284;\n      Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));\n      pOVar12 = this->dynrelro_;\n    }\n  }\n  ppuVar6 = (undefined **)\n            (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            _vptr_Output_data[3];\n  if (ppuVar6 == local_50 + -0x15e484) {\n    uVar16 = (pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_;\n  }\n  else {\n    *(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12;\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1f6;\n    uVar16 = (*(code *)ppuVar6)();\n  }\n  uVar15 = (uint)(uVar16 >> 0x20);\n  pGVar13 = local_4c;\n  if (uVar15 < local_48 || uVar15 - local_48 < (uint)((uint)uVar16 < local_4c)) {\n    *(uint *)((int)ppGVar14 + -8) = local_48;\n    *(General_options **)((int)ppGVar14 + -0xc) = local_4c;\n    *(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12;\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1de;\n    Output_section_data::set_addralign\n              (*(Output_section_data **)((int)ppGVar14 + -0x10),*(uint64_t *)((int)ppGVar14 + -0xc))\n    ;\n    pGVar13 = (General_options *)extraout_ECX;\n  }\n  uVar15 = (uint)(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_;\n  if (*(int *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.data_size_ + 4) != 0) {\n    *(General_options **)((int)ppGVar14 + -4) = pGVar13;\n    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x5911e;\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xc0;\n    *(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x672d3;\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c331;\n    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));\n  }\n  local_40 = 0;\n  local_44 = (Object *)uVar15;\n  if (local_48 != 0 || local_4c != (General_options *)0x0) {\n    local_44 = (Object *)(-(int)local_4c & ((int)local_4c - 1U) + uVar15);\n  }\n  iVar10 = local_58 + (uint)CARRY4(local_5c,(uint)local_44);\n  if (((pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n       field_0x1c & 2) != 0) {\n    *(int *)((int)ppGVar14 + -4) = iVar10;\n    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e0;\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0x231;\n    *(int *)((int)ppGVar14 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c315;\n    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));\n  }\n  *(uint *)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_ = local_5c + (int)local_44;\n  *(int *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_ + 4) = iVar10;\n  *(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8) = reloc_section;\n  *(undefined4 *)((int)ppGVar14 + -0xc) = 0;\n  *(Object **)((int)ppGVar14 + -0x10) = local_44;\n  *(Output_data_space **)((int)ppGVar14 + -0x14) = pOVar12;\n  *(Sized_symbol<64> **)((int)ppGVar14 + -0x18) = sym;\n  *(Symbol_table **)((int)ppGVar14 + -0x1c) = symtab;\n  *(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20) = this;\n  *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c081;\n  emit_copy_reloc(*(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20),\n                  *(Symbol_table **)((int)ppGVar14 + -0x1c),\n                  *(Sized_symbol<64> **)((int)ppGVar14 + -0x18),\n                  *(Output_data **)((int)ppGVar14 + -0x14),*(off_t *)((int)ppGVar14 + -0x10),\n                  *(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8));\n  return;\n}\n\n" comment comment comment comment (declaration "void __thiscall\ngold::Copy_relocs<4,_64,_false>::make_copy_reloc\n          (Copy_relocs<4,_64,_false> *this,Symbol_table *symtab,Layout *layout,Sized_symbol<64> *sym\n          ,Sized_relobj_file<64,_false> *object,Output_data_reloc<4,_true,_64,_false> *reloc_section\n          )\n\n{\n  pointer *pppOVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<4" < number_literal) , identifier , (ERROR "_false>::make_copy_reloc\n          (Copy_relocs<4,_64,_false> *this,Symbol_table *symtab,Layout *layout,Sized_symbol<64> *sym\n          ,Sized_relobj_file<64,_false> *object,Output_data_reloc<4,_true,_64,_false> *reloc_section\n          )\n\n{\n  pointer" identifier > : : (function_declarator "make_copy_reloc\n          (Copy_relocs<4,_64,_false> *this,Symbol_table *symtab,Layout *layout,Sized_symbol<64> *sym\n          ,Sized_relobj_file<64,_false> *object,Output_data_reloc<4,_true,_64,_false> *reloc_section\n          )" identifier (parameter_list "(Copy_relocs<4,_64,_false> *this,Symbol_table *symtab,Layout *layout,Sized_symbol<64> *sym\n          ,Sized_relobj_file<64,_false> *object,Output_data_reloc<4,_true,_64,_false> *reloc_section\n          )" ( (parameter_declaration "Copy_relocs" type_identifier) (ERROR "<4" < number_literal) , (parameter_declaration "_64" type_identifier) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (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_symbol<64> *sym" type_identifier (ERROR "<64>" < number_literal >) (pointer_declarator "*sym" * identifier)) , (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *object" type_identifier (ERROR ">" >) (pointer_declarator "*object" * identifier)) , (parameter_declaration "Output_data_reloc" type_identifier) (ERROR "<4" < number_literal) , (parameter_declaration "_true" type_identifier) , (parameter_declaration "_64" type_identifier) , (parameter_declaration "_false> *reloc_section" type_identifier (ERROR ">" >) (pointer_declarator "*reloc_section" * identifier)) ))) { identifier) (pointer_declarator "*pppOVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "Output_segment *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "Input_file *pIVar4;" type_identifier (pointer_declarator "*pIVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined **ppuVar6;" type_identifier (pointer_declarator "**ppuVar6" * (pointer_declarator "*ppuVar6" * identifier)) ;) (declaration "pointer pcVar7;" type_identifier identifier ;) (declaration "Object *pOVar8;" type_identifier (pointer_declarator "*pOVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "Output_data_space *pOVar12;" type_identifier (pointer_declarator "*pOVar12" * identifier) ;) (declaration "General_options *pGVar13;" type_identifier (pointer_declarator "*pGVar13" * identifier) ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "uint extraout_EDX;" type_identifier identifier ;) (declaration "General_options **ppGVar14;" type_identifier (pointer_declarator "**ppGVar14" * (pointer_declarator "*ppGVar14" * identifier)) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint64_t uVar16;" primitive_type identifier ;) (declaration "General_options *pGStack_60;" type_identifier (pointer_declarator "*pGStack_60" * identifier) ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "undefined **local_50;" type_identifier (pointer_declarator "**local_50" * (pointer_declarator "*local_50" * identifier)) ;) (declaration "General_options *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "Object *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "local_50 = &_GLOBAL_OFFSET_TABLE_;" (assignment_expression "local_50 = &_GLOBAL_OFFSET_TABLE_" identifier = (pointer_expression "&_GLOBAL_OFFSET_TABLE_" & identifier)) ;) (expression_statement "pGVar13 = parameters->options_;" (assignment_expression "pGVar13 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar13 == (General_options *)0x0) {\n    pGStack_60 = pGVar13;\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(pGVar13 == (General_options *)0x0)" ( (binary_expression "pGVar13 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pGStack_60 = pGVar13;\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" { (expression_statement "pGStack_60 = pGVar13;" (assignment_expression "pGStack_60 = pGVar13" identifier = identifier) ;) comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if ((pGVar13->copyreloc_).value == false) {\n    pGStack_60 = pGVar13;\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }" if (parenthesized_expression "((pGVar13->copyreloc_).value == false)" ( (binary_expression "(pGVar13->copyreloc_).value == false" (field_expression "(pGVar13->copyreloc_).value" (parenthesized_expression "(pGVar13->copyreloc_)" ( (field_expression "pGVar13->copyreloc_" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n    pGStack_60 = pGVar13;\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }" { (expression_statement "pGStack_60 = pGVar13;" (assignment_expression "pGStack_60 = pGVar13" identifier = identifier) ;) comment (expression_statement "do_gold_unreachable("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");" (call_expression "do_gold_unreachable("../../gold/copy-relocs.cc",0x76,"make_copy_reloc")" identifier (argument_list "("../../gold/copy-relocs.cc",0x76,"make_copy_reloc")" ( (string_literal ""../../gold/copy-relocs.cc"" " string_content ") , number_literal , (string_literal ""make_copy_reloc"" " string_content ") ))) ;) })) (if_statement "if ((((sym->super_Symbol).field_0x2a & 7) != 0) ||\n     (pOVar3 = (sym->super_Symbol).u1_.output_segment,\n     ((uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_end_of_storage & 1) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }" if (parenthesized_expression "((((sym->super_Symbol).field_0x2a & 7) != 0) ||\n     (pOVar3 = (sym->super_Symbol).u1_.output_segment,\n     ((uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_end_of_storage & 1) == 0))" ( (binary_expression "(((sym->super_Symbol).field_0x2a & 7) != 0) ||\n     (pOVar3 = (sym->super_Symbol).u1_.output_segment,\n     ((uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_end_of_storage & 1) == 0)" (parenthesized_expression "(((sym->super_Symbol).field_0x2a & 7) != 0)" ( (binary_expression "((sym->super_Symbol).field_0x2a & 7) != 0" (parenthesized_expression "((sym->super_Symbol).field_0x2a & 7)" ( (binary_expression "(sym->super_Symbol).field_0x2a & 7" (field_expression "(sym->super_Symbol).field_0x2a" (parenthesized_expression "(sym->super_Symbol)" ( (field_expression "sym->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(pOVar3 = (sym->super_Symbol).u1_.output_segment,\n     ((uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_end_of_storage & 1) == 0)" ( (comma_expression "pOVar3 = (sym->super_Symbol).u1_.output_segment,\n     ((uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_end_of_storage & 1) == 0" (assignment_expression "pOVar3 = (sym->super_Symbol).u1_.output_segment" identifier = (field_expression "(sym->super_Symbol).u1_.output_segment" (field_expression "(sym->super_Symbol).u1_" (parenthesized_expression "(sym->super_Symbol)" ( (field_expression "sym->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "((uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_end_of_storage & 1) == 0" (parenthesized_expression "((uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_end_of_storage & 1)" ( (binary_expression "(uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_end_of_storage & 1" (field_expression "(uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_end_of_storage" (field_expression "(uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "(uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "(uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "(uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold::Output_data*,_std" (binary_expression "(uint)pOVar3->output_lists_[3].\n            super__Vector_base<gold" (cast_expression "(uint)pOVar3->output_lists_[3].\n            super__Vector_base" ( (type_descriptor "uint" type_identifier) ) (field_expression "pOVar3->output_lists_[3].\n            super__Vector_base" (subscript_expression "pOVar3->output_lists_[3]" (field_expression "pOVar3->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");" (call_expression "do_gold_unreachable("../../gold/copy-relocs.cc",0x78,"make_copy_reloc")" identifier (argument_list "("../../gold/copy-relocs.cc",0x78,"make_copy_reloc")" ( (string_literal ""../../gold/copy-relocs.cc"" " string_content ") , number_literal , (string_literal ""make_copy_reloc"" " string_content ") ))) ;) })) (if_statement "if (((sym->super_Symbol).field_0x2c & 8) == 0) {\n    local_58 = *(int *)((int)&sym->symsize_ + 4);\n    local_5c = (uint)sym->symsize_;\n  }\n  else {\n    local_4c = (General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_finish;\n    local_44 = (Object *)(sym->super_Symbol).name_;\n    pcVar7 = (object->super_Sized_relobj<64,_false>).super_Relobj.super_Object.name_._M_dataplus.\n             _M_p;\n    format = (char *)gettext(\n                            "%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"\n                            );\n    pGStack_60 = local_4c;\n    gold_error(format,pcVar7,local_44);\n    local_58 = *(int *)((int)&sym->symsize_ + 4);\n    local_5c = (uint)sym->symsize_;\n    if (((sym->super_Symbol).field_0x2a & 7) != 0) {\n      pGStack_60 = (General_options *)sym;\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(local_50 + -0x67308),0xaa,(char *)(local_50 + -0x590f1));\n    }\n  }" if (parenthesized_expression "(((sym->super_Symbol).field_0x2c & 8) == 0)" ( (binary_expression "((sym->super_Symbol).field_0x2c & 8) == 0" (parenthesized_expression "((sym->super_Symbol).field_0x2c & 8)" ( (binary_expression "(sym->super_Symbol).field_0x2c & 8" (field_expression "(sym->super_Symbol).field_0x2c" (parenthesized_expression "(sym->super_Symbol)" ( (field_expression "sym->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    local_58 = *(int *)((int)&sym->symsize_ + 4);\n    local_5c = (uint)sym->symsize_;\n  }" { (expression_statement "local_58 = *(int *)((int)&sym->symsize_ + 4);" (assignment_expression "local_58 = *(int *)((int)&sym->symsize_ + 4)" identifier = (pointer_expression "*(int *)((int)&sym->symsize_ + 4)" * (cast_expression "(int *)((int)&sym->symsize_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&sym->symsize_ + 4)" ( (binary_expression "(int)&sym->symsize_ + 4" (cast_expression "(int)&sym->symsize_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sym->symsize_" & (field_expression "sym->symsize_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "local_5c = (uint)sym->symsize_;" (assignment_expression "local_5c = (uint)sym->symsize_" identifier = (cast_expression "(uint)sym->symsize_" ( (type_descriptor "uint" type_identifier) ) (field_expression "sym->symsize_" identifier -> field_identifier))) ;) }) (else_clause "else {\n    local_4c = (General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_finish;\n    local_44 = (Object *)(sym->super_Symbol).name_;\n    pcVar7 = (object->super_Sized_relobj<64,_false>).super_Relobj.super_Object.name_._M_dataplus.\n             _M_p;\n    format = (char *)gettext(\n                            "%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"\n                            );\n    pGStack_60 = local_4c;\n    gold_error(format,pcVar7,local_44);\n    local_58 = *(int *)((int)&sym->symsize_ + 4);\n    local_5c = (uint)sym->symsize_;\n    if (((sym->super_Symbol).field_0x2a & 7) != 0) {\n      pGStack_60 = (General_options *)sym;\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(local_50 + -0x67308),0xaa,(char *)(local_50 + -0x590f1));\n    }\n  }" else (compound_statement "{\n    local_4c = (General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_finish;\n    local_44 = (Object *)(sym->super_Symbol).name_;\n    pcVar7 = (object->super_Sized_relobj<64,_false>).super_Relobj.super_Object.name_._M_dataplus.\n             _M_p;\n    format = (char *)gettext(\n                            "%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"\n                            );\n    pGStack_60 = local_4c;\n    gold_error(format,pcVar7,local_44);\n    local_58 = *(int *)((int)&sym->symsize_ + 4);\n    local_5c = (uint)sym->symsize_;\n    if (((sym->super_Symbol).field_0x2a & 7) != 0) {\n      pGStack_60 = (General_options *)sym;\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(local_50 + -0x67308),0xaa,(char *)(local_50 + -0x590f1));\n    }\n  }" { (expression_statement "local_4c = (General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_finish;" (field_expression "local_4c = (General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_finish" (field_expression "local_4c = (General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "local_4c = (General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "local_4c = (General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "local_4c = (General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std" (assignment_expression "local_4c = (General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold" identifier = (binary_expression "(General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base<gold" (cast_expression "(General_options *)\n               pOVar3->output_lists_[0].\n               super__Vector_base" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pOVar3->output_lists_[0].\n               super__Vector_base" (subscript_expression "pOVar3->output_lists_[0]" (field_expression "pOVar3->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "local_44 = (Object *)(sym->super_Symbol).name_;" (assignment_expression "local_44 = (Object *)(sym->super_Symbol).name_" identifier = (cast_expression "(Object *)(sym->super_Symbol).name_" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(sym->super_Symbol).name_" (parenthesized_expression "(sym->super_Symbol)" ( (field_expression "sym->super_Symbol" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pcVar7 = (object->super_Sized_relobj<64,_false>).super_Relobj.super_Object.name_._M_dataplus.\n             _M_p;" (assignment_expression "pcVar7 = (object->super_Sized_relobj<64,_false>).super_Relobj.super_Object.name_._M_dataplus.\n             _M_p" identifier = (field_expression "(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object.name_._M_dataplus.\n             _M_p" (field_expression "(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object.name_._M_dataplus" (field_expression "(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object.name_" (field_expression "(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(object->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(object->super_Sized_relobj<64,_false>)" ( (comma_expression "object->super_Sized_relobj<64,_false" (binary_expression "object->super_Sized_relobj<64" (field_expression "object->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "format = (char *)gettext(\n                            "%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"\n                            );" (assignment_expression "format = (char *)gettext(\n                            "%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"\n                            )" identifier = (cast_expression "(char *)gettext(\n                            "%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"\n                            )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(\n                            "%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"\n                            )" identifier (argument_list "(\n                            "%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"\n                            )" ( (string_literal ""%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"" " string_content escape_sequence string_content escape_sequence string_content ") ))))) ;) (expression_statement "pGStack_60 = local_4c;" (assignment_expression "pGStack_60 = local_4c" identifier = identifier) ;) (expression_statement "gold_error(format,pcVar7,local_44);" (call_expression "gold_error(format,pcVar7,local_44)" identifier (argument_list "(format,pcVar7,local_44)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_58 = *(int *)((int)&sym->symsize_ + 4);" (assignment_expression "local_58 = *(int *)((int)&sym->symsize_ + 4)" identifier = (pointer_expression "*(int *)((int)&sym->symsize_ + 4)" * (cast_expression "(int *)((int)&sym->symsize_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&sym->symsize_ + 4)" ( (binary_expression "(int)&sym->symsize_ + 4" (cast_expression "(int)&sym->symsize_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sym->symsize_" & (field_expression "sym->symsize_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "local_5c = (uint)sym->symsize_;" (assignment_expression "local_5c = (uint)sym->symsize_" identifier = (cast_expression "(uint)sym->symsize_" ( (type_descriptor "uint" type_identifier) ) (field_expression "sym->symsize_" identifier -> field_identifier))) ;) (if_statement "if (((sym->super_Symbol).field_0x2a & 7) != 0) {\n      pGStack_60 = (General_options *)sym;\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(local_50 + -0x67308),0xaa,(char *)(local_50 + -0x590f1));\n    }" if (parenthesized_expression "(((sym->super_Symbol).field_0x2a & 7) != 0)" ( (binary_expression "((sym->super_Symbol).field_0x2a & 7) != 0" (parenthesized_expression "((sym->super_Symbol).field_0x2a & 7)" ( (binary_expression "(sym->super_Symbol).field_0x2a & 7" (field_expression "(sym->super_Symbol).field_0x2a" (parenthesized_expression "(sym->super_Symbol)" ( (field_expression "sym->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      pGStack_60 = (General_options *)sym;\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(local_50 + -0x67308),0xaa,(char *)(local_50 + -0x590f1));\n    }" { (expression_statement "pGStack_60 = (General_options *)sym;" (assignment_expression "pGStack_60 = (General_options *)sym" identifier = (cast_expression "(General_options *)sym" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) comment (expression_statement "do_gold_unreachable((char *)(local_50 + -0x67308),0xaa,(char *)(local_50 + -0x590f1));" (call_expression "do_gold_unreachable((char *)(local_50 + -0x67308),0xaa,(char *)(local_50 + -0x590f1))" identifier (argument_list "((char *)(local_50 + -0x67308),0xaa,(char *)(local_50 + -0x590f1))" ( (cast_expression "(char *)(local_50 + -0x67308)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x67308)" ( (binary_expression "local_50 + -0x67308" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(local_50 + -0x590f1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x590f1)" ( (binary_expression "local_50 + -0x590f1" identifier + number_literal) ))) ))) ;) })) }))) (expression_statement "local_54 = (sym->super_Symbol).u2_.shndx;" (assignment_expression "local_54 = (sym->super_Symbol).u2_.shndx" identifier = (field_expression "(sym->super_Symbol).u2_.shndx" (field_expression "(sym->super_Symbol).u2_" (parenthesized_expression "(sym->super_Symbol)" ( (field_expression "sym->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (((sym->super_Symbol).field_0x2b & 0x20) == 0) {\n    pGStack_60 = (General_options *)sym;\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(local_50 + -0x5917e),0x8e,(char *)(local_50 + -0x59146));\n  }" if (parenthesized_expression "(((sym->super_Symbol).field_0x2b & 0x20) == 0)" ( (binary_expression "((sym->super_Symbol).field_0x2b & 0x20) == 0" (parenthesized_expression "((sym->super_Symbol).field_0x2b & 0x20)" ( (binary_expression "(sym->super_Symbol).field_0x2b & 0x20" (field_expression "(sym->super_Symbol).field_0x2b" (parenthesized_expression "(sym->super_Symbol)" ( (field_expression "sym->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    pGStack_60 = (General_options *)sym;\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(local_50 + -0x5917e),0x8e,(char *)(local_50 + -0x59146));\n  }" { (expression_statement "pGStack_60 = (General_options *)sym;" (assignment_expression "pGStack_60 = (General_options *)sym" identifier = (cast_expression "(General_options *)sym" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) comment (expression_statement "do_gold_unreachable((char *)(local_50 + -0x5917e),0x8e,(char *)(local_50 + -0x59146));" (call_expression "do_gold_unreachable((char *)(local_50 + -0x5917e),0x8e,(char *)(local_50 + -0x59146))" identifier (argument_list "((char *)(local_50 + -0x5917e),0x8e,(char *)(local_50 + -0x59146))" ( (cast_expression "(char *)(local_50 + -0x5917e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x5917e)" ( (binary_expression "local_50 + -0x5917e" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(local_50 + -0x59146)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x59146)" ( (binary_expression "local_50 + -0x59146" identifier + number_literal) ))) ))) ;) })) (expression_statement "local_44 = (sym->super_Symbol).u1_.object;" (assignment_expression "local_44 = (sym->super_Symbol).u1_.object" identifier = (field_expression "(sym->super_Symbol).u1_.object" (field_expression "(sym->super_Symbol).u1_" (parenthesized_expression "(sym->super_Symbol)" ( (field_expression "sym->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (local_44->input_file_ != (Input_file *)0x0) {\n    File_read::lock(&local_44->input_file_->file_,(Task *)0xffffffff);\n  }" if (parenthesized_expression "(local_44->input_file_ != (Input_file *)0x0)" ( (binary_expression "local_44->input_file_ != (Input_file *)0x0" (field_expression "local_44->input_file_" identifier -> field_identifier) != (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    File_read::lock(&local_44->input_file_->file_,(Task *)0xffffffff);\n  }" { (labeled_statement "File_read::lock(&local_44->input_file_->file_,(Task *)0xffffffff);" statement_identifier : (ERROR ":" :) (expression_statement "lock(&local_44->input_file_->file_,(Task *)0xffffffff);" (call_expression "lock(&local_44->input_file_->file_,(Task *)0xffffffff)" identifier (argument_list "(&local_44->input_file_->file_,(Task *)0xffffffff)" ( (pointer_expression "&local_44->input_file_->file_" & (field_expression "local_44->input_file_->file_" (field_expression "local_44->input_file_" identifier -> field_identifier) -> field_identifier)) , (cast_expression "(Task *)0xffffffff" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;)) })) comment (expression_statement "local_4c = (General_options *)(*local_44->_vptr_Object[0x17])(local_44,local_54);" (assignment_expression "local_4c = (General_options *)(*local_44->_vptr_Object[0x17])(local_44,local_54)" identifier = (cast_expression "(General_options *)(*local_44->_vptr_Object[0x17])(local_44,local_54)" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*local_44->_vptr_Object[0x17])(local_44,local_54)" (parenthesized_expression "(*local_44->_vptr_Object[0x17])" ( (pointer_expression "*local_44->_vptr_Object[0x17]" * (subscript_expression "local_44->_vptr_Object[0x17]" (field_expression "local_44->_vptr_Object" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(local_44,local_54)" ( identifier , identifier ))))) ;) (expression_statement "pOVar8 = local_44;" (assignment_expression "pOVar8 = local_44" identifier = identifier) ;) (expression_statement "pGVar13 = parameters->options_;" (assignment_expression "pGVar13 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar13 == (General_options *)0x0) {\n    pGStack_60 = pGVar13;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */\n    do_gold_unreachable((char *)((int)local_50 + -0x1a1d93),0x5c,(char *)(local_50 + -0x590f3));\n  }" if (parenthesized_expression "(pGVar13 == (General_options *)0x0)" ( (binary_expression "pGVar13 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pGStack_60 = pGVar13;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */\n    do_gold_unreachable((char *)((int)local_50 + -0x1a1d93),0x5c,(char *)(local_50 + -0x590f3));\n  }" { (expression_statement "pGStack_60 = pGVar13;" (assignment_expression "pGStack_60 = pGVar13" identifier = identifier) ;) comment comment (expression_statement "do_gold_unreachable((char *)((int)local_50 + -0x1a1d93),0x5c,(char *)(local_50 + -0x590f3));" (call_expression "do_gold_unreachable((char *)((int)local_50 + -0x1a1d93),0x5c,(char *)(local_50 + -0x590f3))" identifier (argument_list "((char *)((int)local_50 + -0x1a1d93),0x5c,(char *)(local_50 + -0x590f3))" ( (cast_expression "(char *)((int)local_50 + -0x1a1d93)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_50 + -0x1a1d93)" ( (binary_expression "(int)local_50 + -0x1a1d93" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , number_literal , (cast_expression "(char *)(local_50 + -0x590f3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x590f3)" ( (binary_expression "local_50 + -0x590f3" identifier + number_literal) ))) ))) ;) })) (expression_statement "bVar2 = (pGVar13->relro_).value;" (assignment_expression "bVar2 = (pGVar13->relro_).value" identifier = (field_expression "(pGVar13->relro_).value" (parenthesized_expression "(pGVar13->relro_)" ( (field_expression "pGVar13->relro_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar15 = (uint)bVar2;" (assignment_expression "uVar15 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "ppGVar14 = (General_options **)&local_5c;" (assignment_expression "ppGVar14 = (General_options **)&local_5c" identifier = (cast_expression "(General_options **)&local_5c" ( (type_descriptor "General_options **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_5c" & identifier))) ;) (expression_statement "local_48 = extraout_EDX;" (assignment_expression "local_48 = extraout_EDX" identifier = identifier) ;) (if_statement "if ((bVar2 != false) &&\n     (uVar9 = (*local_44->_vptr_Object[0x11])(local_44,local_54),\n     ppGVar14 = (General_options **)&local_5c, (uVar9 & 1) != 0)) {\n    (*pOVar8->_vptr_Object[0x10])(local_34,pOVar8,local_54);\n    iVar10 = std::string::compare((char *)local_34);\n    puVar11 = local_2c;\n    if (local_34[0] != puVar11) {\n      operator_delete(local_34[0]);\n    }\n    ppGVar14 = &pGStack_60;\n    uVar15 = CONCAT31((int3)((uint)puVar11 >> 8),iVar10 == 0);\n  }" if (parenthesized_expression "((bVar2 != false) &&\n     (uVar9 = (*local_44->_vptr_Object[0x11])(local_44,local_54),\n     ppGVar14 = (General_options **)&local_5c, (uVar9 & 1) != 0))" ( (binary_expression "(bVar2 != false) &&\n     (uVar9 = (*local_44->_vptr_Object[0x11])(local_44,local_54),\n     ppGVar14 = (General_options **)&local_5c, (uVar9 & 1) != 0)" (parenthesized_expression "(bVar2 != false)" ( (binary_expression "bVar2 != false" identifier != false) )) && (parenthesized_expression "(uVar9 = (*local_44->_vptr_Object[0x11])(local_44,local_54),\n     ppGVar14 = (General_options **)&local_5c, (uVar9 & 1) != 0)" ( (comma_expression "uVar9 = (*local_44->_vptr_Object[0x11])(local_44,local_54),\n     ppGVar14 = (General_options **)&local_5c, (uVar9 & 1) != 0" (assignment_expression "uVar9 = (*local_44->_vptr_Object[0x11])(local_44,local_54)" identifier = (call_expression "(*local_44->_vptr_Object[0x11])(local_44,local_54)" (parenthesized_expression "(*local_44->_vptr_Object[0x11])" ( (pointer_expression "*local_44->_vptr_Object[0x11]" * (subscript_expression "local_44->_vptr_Object[0x11]" (field_expression "local_44->_vptr_Object" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(local_44,local_54)" ( identifier , identifier )))) , (comma_expression "ppGVar14 = (General_options **)&local_5c, (uVar9 & 1) != 0" (assignment_expression "ppGVar14 = (General_options **)&local_5c" identifier = (cast_expression "(General_options **)&local_5c" ( (type_descriptor "General_options **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_5c" & identifier))) , (binary_expression "(uVar9 & 1) != 0" (parenthesized_expression "(uVar9 & 1)" ( (binary_expression "uVar9 & 1" identifier & number_literal) )) != number_literal))) ))) )) (compound_statement "{\n    (*pOVar8->_vptr_Object[0x10])(local_34,pOVar8,local_54);\n    iVar10 = std::string::compare((char *)local_34);\n    puVar11 = local_2c;\n    if (local_34[0] != puVar11) {\n      operator_delete(local_34[0]);\n    }\n    ppGVar14 = &pGStack_60;\n    uVar15 = CONCAT31((int3)((uint)puVar11 >> 8),iVar10 == 0);\n  }" { (expression_statement "(*pOVar8->_vptr_Object[0x10])(local_34,pOVar8,local_54);" (call_expression "(*pOVar8->_vptr_Object[0x10])(local_34,pOVar8,local_54)" (parenthesized_expression "(*pOVar8->_vptr_Object[0x10])" ( (pointer_expression "*pOVar8->_vptr_Object[0x10]" * (subscript_expression "pOVar8->_vptr_Object[0x10]" (field_expression "pOVar8->_vptr_Object" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(local_34,pOVar8,local_54)" ( identifier , identifier , identifier ))) ;) (ERROR "iVar10 = std::" (assignment_expression "iVar10 = std" identifier = identifier) : :) (labeled_statement "string::compare((char *)local_34);" statement_identifier : (ERROR ":" :) (expression_statement "compare((char *)local_34);" (call_expression "compare((char *)local_34)" identifier (argument_list "((char *)local_34)" ( (cast_expression "(char *)local_34" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "puVar11 = local_2c;" (assignment_expression "puVar11 = local_2c" identifier = identifier) ;) (if_statement "if (local_34[0] != puVar11) {\n      operator_delete(local_34[0]);\n    }" if (parenthesized_expression "(local_34[0] != puVar11)" ( (binary_expression "local_34[0] != puVar11" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n      operator_delete(local_34[0]);\n    }" { (expression_statement "operator_delete(local_34[0]);" (call_expression "operator_delete(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) })) (expression_statement "ppGVar14 = &pGStack_60;" (assignment_expression "ppGVar14 = &pGStack_60" identifier = (pointer_expression "&pGStack_60" & identifier)) ;) (expression_statement "uVar15 = CONCAT31((int3)((uint)puVar11 >> 8),iVar10 == 0);" (assignment_expression "uVar15 = CONCAT31((int3)((uint)puVar11 >> 8),iVar10 == 0)" identifier = (call_expression "CONCAT31((int3)((uint)puVar11 >> 8),iVar10 == 0)" identifier (argument_list "((int3)((uint)puVar11 >> 8),iVar10 == 0)" ( (call_expression "(int3)((uint)puVar11 >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)puVar11 >> 8)" ( (binary_expression "(uint)puVar11 >> 8" (cast_expression "(uint)puVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) , (binary_expression "iVar10 == 0" identifier == number_literal) )))) ;) })) (expression_statement "pIVar4 = local_44->input_file_;" (assignment_expression "pIVar4 = local_44->input_file_" identifier = (field_expression "local_44->input_file_" identifier -> field_identifier)) ;) (if_statement "if (pIVar4 != (Input_file *)0x0) {\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xffffffff;\n    *(File_read **)((int)ppGVar14 + -0x10) = &pIVar4->file_;\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22bf4f;\n    File_read::unlock(*(File_read **)((int)ppGVar14 + -0x10),*(Task **)((int)ppGVar14 + -0xc));\n  }" if (parenthesized_expression "(pIVar4 != (Input_file *)0x0)" ( (binary_expression "pIVar4 != (Input_file *)0x0" identifier != (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xffffffff;\n    *(File_read **)((int)ppGVar14 + -0x10) = &pIVar4->file_;\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22bf4f;\n    File_read::unlock(*(File_read **)((int)ppGVar14 + -0x10),*(Task **)((int)ppGVar14 + -0xc));\n  }" { (expression_statement "*(undefined4 *)((int)ppGVar14 + -0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0xc)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(File_read **)((int)ppGVar14 + -0x10) = &pIVar4->file_;" (assignment_expression "*(File_read **)((int)ppGVar14 + -0x10) = &pIVar4->file_" (pointer_expression "*(File_read **)((int)ppGVar14 + -0x10)" * (cast_expression "(File_read **)((int)ppGVar14 + -0x10)" ( (type_descriptor "File_read **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&pIVar4->file_" & (field_expression "pIVar4->file_" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22bf4f;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22bf4f" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x14)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (labeled_statement "File_read::unlock(*(File_read **)((int)ppGVar14 + -0x10),*(Task **)((int)ppGVar14 + -0xc));" statement_identifier : (ERROR ":" :) (expression_statement "unlock(*(File_read **)((int)ppGVar14 + -0x10),*(Task **)((int)ppGVar14 + -0xc));" (call_expression "unlock(*(File_read **)((int)ppGVar14 + -0x10),*(Task **)((int)ppGVar14 + -0xc))" identifier (argument_list "(*(File_read **)((int)ppGVar14 + -0x10),*(Task **)((int)ppGVar14 + -0xc))" ( (pointer_expression "*(File_read **)((int)ppGVar14 + -0x10)" * (cast_expression "(File_read **)((int)ppGVar14 + -0x10)" ( (type_descriptor "File_read **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Task **)((int)ppGVar14 + -0xc)" * (cast_expression "(Task **)((int)ppGVar14 + -0xc)" ( (type_descriptor "Task **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;)) })) (expression_statement "ppuVar6 = local_50;" (assignment_expression "ppuVar6 = local_50" identifier = identifier) ;) (expression_statement "uVar9 = (uint)sym->value_;" (assignment_expression "uVar9 = (uint)sym->value_" identifier = (cast_expression "(uint)sym->value_" ( (type_descriptor "uint" type_identifier) ) (field_expression "sym->value_" identifier -> field_identifier))) ;) (expression_statement "uVar5 = *(uint *)((int)&sym->value_ + 4);" (assignment_expression "uVar5 = *(uint *)((int)&sym->value_ + 4)" identifier = (pointer_expression "*(uint *)((int)&sym->value_ + 4)" * (cast_expression "(uint *)((int)&sym->value_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&sym->value_ + 4)" ( (binary_expression "(int)&sym->value_ + 4" (cast_expression "(int)&sym->value_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sym->value_" & (field_expression "sym->value_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "local_44 = (Object *)((int)local_4c - 1);" (assignment_expression "local_44 = (Object *)((int)local_4c - 1)" identifier = (cast_expression "(Object *)((int)local_4c - 1)" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c - 1)" ( (binary_expression "(int)local_4c - 1" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "local_40 = (local_48 - 1) + (uint)(local_4c != (General_options *)0x0);" (assignment_expression "local_40 = (local_48 - 1) + (uint)(local_4c != (General_options *)0x0)" identifier = (binary_expression "(local_48 - 1) + (uint)(local_4c != (General_options *)0x0)" (parenthesized_expression "(local_48 - 1)" ( (binary_expression "local_48 - 1" identifier - number_literal) )) + (call_expression "(uint)(local_4c != (General_options *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_4c != (General_options *)0x0)" ( (binary_expression "local_4c != (General_options *)0x0" identifier != (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))))) ;) (if_statement "if ((local_40 & uVar5) != 0 || ((uint)local_44 & uVar9) != 0) {\n    local_44 = (Object *)local_4c;\n    local_40 = local_48;\n    do {\n      local_4c = (General_options *)((uint)local_44 >> 1 | local_40 << 0x1f);\n      local_48 = local_40 >> 1;\n      local_44 = (Object *)local_4c;\n      local_40 = local_48;\n    } while (((local_48 - 1) + (uint)(local_4c != (General_options *)0x0) & uVar5) != 0 ||\n             ((int)local_4c - 1U & uVar9) != 0);\n  }" if (parenthesized_expression "((local_40 & uVar5) != 0 || ((uint)local_44 & uVar9) != 0)" ( (binary_expression "(local_40 & uVar5) != 0 || ((uint)local_44 & uVar9) != 0" (binary_expression "(local_40 & uVar5) != 0" (parenthesized_expression "(local_40 & uVar5)" ( (binary_expression "local_40 & uVar5" identifier & identifier) )) != number_literal) || (binary_expression "((uint)local_44 & uVar9) != 0" (parenthesized_expression "((uint)local_44 & uVar9)" ( (binary_expression "(uint)local_44 & uVar9" (cast_expression "(uint)local_44" ( (type_descriptor "uint" type_identifier) ) identifier) & identifier) )) != number_literal)) )) (compound_statement "{\n    local_44 = (Object *)local_4c;\n    local_40 = local_48;\n    do {\n      local_4c = (General_options *)((uint)local_44 >> 1 | local_40 << 0x1f);\n      local_48 = local_40 >> 1;\n      local_44 = (Object *)local_4c;\n      local_40 = local_48;\n    } while (((local_48 - 1) + (uint)(local_4c != (General_options *)0x0) & uVar5) != 0 ||\n             ((int)local_4c - 1U & uVar9) != 0);\n  }" { (expression_statement "local_44 = (Object *)local_4c;" (assignment_expression "local_44 = (Object *)local_4c" identifier = (cast_expression "(Object *)local_4c" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_40 = local_48;" (assignment_expression "local_40 = local_48" identifier = identifier) ;) (do_statement "do {\n      local_4c = (General_options *)((uint)local_44 >> 1 | local_40 << 0x1f);\n      local_48 = local_40 >> 1;\n      local_44 = (Object *)local_4c;\n      local_40 = local_48;\n    } while (((local_48 - 1) + (uint)(local_4c != (General_options *)0x0) & uVar5) != 0 ||\n             ((int)local_4c - 1U & uVar9) != 0);" do (compound_statement "{\n      local_4c = (General_options *)((uint)local_44 >> 1 | local_40 << 0x1f);\n      local_48 = local_40 >> 1;\n      local_44 = (Object *)local_4c;\n      local_40 = local_48;\n    }" { (expression_statement "local_4c = (General_options *)((uint)local_44 >> 1 | local_40 << 0x1f);" (assignment_expression "local_4c = (General_options *)((uint)local_44 >> 1 | local_40 << 0x1f)" identifier = (cast_expression "(General_options *)((uint)local_44 >> 1 | local_40 << 0x1f)" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_44 >> 1 | local_40 << 0x1f)" ( (binary_expression "(uint)local_44 >> 1 | local_40 << 0x1f" (binary_expression "(uint)local_44 >> 1" (cast_expression "(uint)local_44" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "local_40 << 0x1f" identifier << number_literal)) )))) ;) (expression_statement "local_48 = local_40 >> 1;" (assignment_expression "local_48 = local_40 >> 1" identifier = (binary_expression "local_40 >> 1" identifier >> number_literal)) ;) (expression_statement "local_44 = (Object *)local_4c;" (assignment_expression "local_44 = (Object *)local_4c" identifier = (cast_expression "(Object *)local_4c" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_40 = local_48;" (assignment_expression "local_40 = local_48" identifier = identifier) ;) }) while (parenthesized_expression "(((local_48 - 1) + (uint)(local_4c != (General_options *)0x0) & uVar5) != 0 ||\n             ((int)local_4c - 1U & uVar9) != 0)" ( (binary_expression "((local_48 - 1) + (uint)(local_4c != (General_options *)0x0) & uVar5) != 0 ||\n             ((int)local_4c - 1U & uVar9) != 0" (binary_expression "((local_48 - 1) + (uint)(local_4c != (General_options *)0x0) & uVar5) != 0" (parenthesized_expression "((local_48 - 1) + (uint)(local_4c != (General_options *)0x0) & uVar5)" ( (binary_expression "(local_48 - 1) + (uint)(local_4c != (General_options *)0x0) & uVar5" (binary_expression "(local_48 - 1) + (uint)(local_4c != (General_options *)0x0)" (parenthesized_expression "(local_48 - 1)" ( (binary_expression "local_48 - 1" identifier - number_literal) )) + (call_expression "(uint)(local_4c != (General_options *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_4c != (General_options *)0x0)" ( (binary_expression "local_4c != (General_options *)0x0" identifier != (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) & identifier) )) != number_literal) || (binary_expression "((int)local_4c - 1U & uVar9) != 0" (parenthesized_expression "((int)local_4c - 1U & uVar9)" ( (binary_expression "(int)local_4c - 1U & uVar9" (binary_expression "(int)local_4c - 1U" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & identifier) )) != number_literal)) )) ;) })) (if_statement "if (((sym->super_Symbol).field_0x2a & 7) != 0) {\n    *(uint *)((int)ppGVar14 + -4) = uVar15;\n    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x67308;\n                    /* WARNING: Subroutine does not return */\n    *(undefined1 **)((int)ppGVar14 + -0x14) = &LAB_0022c34d;\n    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));\n  }" if (parenthesized_expression "(((sym->super_Symbol).field_0x2a & 7) != 0)" ( (binary_expression "((sym->super_Symbol).field_0x2a & 7) != 0" (parenthesized_expression "((sym->super_Symbol).field_0x2a & 7)" ( (binary_expression "(sym->super_Symbol).field_0x2a & 7" (field_expression "(sym->super_Symbol).field_0x2a" (parenthesized_expression "(sym->super_Symbol)" ( (field_expression "sym->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    *(uint *)((int)ppGVar14 + -4) = uVar15;\n    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x67308;\n                    /* WARNING: Subroutine does not return */\n    *(undefined1 **)((int)ppGVar14 + -0x14) = &LAB_0022c34d;\n    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));\n  }" { (expression_statement "*(uint *)((int)ppGVar14 + -4) = uVar15;" (assignment_expression "*(uint *)((int)ppGVar14 + -4) = uVar15" (pointer_expression "*(uint *)((int)ppGVar14 + -4)" * (cast_expression "(uint *)((int)ppGVar14 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -4)" ( (binary_expression "(int)ppGVar14 + -4" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e6;" (assignment_expression "*(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e6" (pointer_expression "*(undefined ***)((int)ppGVar14 + -8)" * (cast_expression "(undefined ***)((int)ppGVar14 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x590e6" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0xc) = 0xa1;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0xc) = 0xa1" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0xc)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x67308;" (assignment_expression "*(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x67308" (pointer_expression "*(undefined ***)((int)ppGVar14 + -0x10)" * (cast_expression "(undefined ***)((int)ppGVar14 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x67308" identifier + number_literal)) ;) comment (expression_statement "*(undefined1 **)((int)ppGVar14 + -0x14) = &LAB_0022c34d;" (assignment_expression "*(undefined1 **)((int)ppGVar14 + -0x14) = &LAB_0022c34d" (pointer_expression "*(undefined1 **)((int)ppGVar14 + -0x14)" * (cast_expression "(undefined1 **)((int)ppGVar14 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&LAB_0022c34d" & identifier)) ;) (expression_statement "do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));" (call_expression "do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8))" identifier (argument_list "(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8))" ( (pointer_expression "*(char **)((int)ppGVar14 + -0x10)" * (cast_expression "(char **)((int)ppGVar14 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(int *)((int)ppGVar14 + -0xc)" * (cast_expression "(int *)((int)ppGVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)ppGVar14 + -8)" * (cast_expression "(char **)((int)ppGVar14 + -8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) })) (expression_statement "pppOVar1 = &((sym->super_Symbol).u1_.output_segment)->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage;" (field_expression "pppOVar1 = &((sym->super_Symbol).u1_.output_segment)->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_end_of_storage" (field_expression "pppOVar1 = &((sym->super_Symbol).u1_.output_segment)->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "pppOVar1 = &((sym->super_Symbol).u1_.output_segment)->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pppOVar1 = &((sym->super_Symbol).u1_.output_segment)->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pppOVar1 = &((sym->super_Symbol).u1_.output_segment)->output_lists_[3].\n              super__Vector_base<gold::Output_data*,_std" (assignment_expression "pppOVar1 = &((sym->super_Symbol).u1_.output_segment)->output_lists_[3].\n              super__Vector_base<gold" identifier = (binary_expression "&((sym->super_Symbol).u1_.output_segment)->output_lists_[3].\n              super__Vector_base<gold" (pointer_expression "&((sym->super_Symbol).u1_.output_segment)->output_lists_[3].\n              super__Vector_base" & (field_expression "((sym->super_Symbol).u1_.output_segment)->output_lists_[3].\n              super__Vector_base" (subscript_expression "((sym->super_Symbol).u1_.output_segment)->output_lists_[3]" (field_expression "((sym->super_Symbol).u1_.output_segment)->output_lists_" (parenthesized_expression "((sym->super_Symbol).u1_.output_segment)" ( (field_expression "(sym->super_Symbol).u1_.output_segment" (field_expression "(sym->super_Symbol).u1_" (parenthesized_expression "(sym->super_Symbol)" ( (field_expression "sym->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) )) -> field_identifier) [ number_literal ]) . field_identifier)) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "*(byte *)pppOVar1 = *(byte *)pppOVar1 | 2;" (assignment_expression "*(byte *)pppOVar1 = *(byte *)pppOVar1 | 2" (pointer_expression "*(byte *)pppOVar1" * (cast_expression "(byte *)pppOVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "*(byte *)pppOVar1 | 2" (pointer_expression "*(byte *)pppOVar1" * (cast_expression "(byte *)pppOVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) | number_literal)) ;) (if_statement "if ((char)uVar15 == '\0') {\n    pOVar12 = this->dynbss_;\n    if (pOVar12 == (Output_data_space *)0x0) {\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c14a;\n      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);\n      *(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;\n      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;\n      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;\n      *puVar11 = *puVar11 & 0xe0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;\n      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645c5);\n      this->dynbss_ = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -4) = 0;\n      *(undefined4 *)((int)ppGVar14 + -8) = 0x1b;\n      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;\n      *(undefined4 *)((int)ppGVar14 + -0x18) = 8;\n      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645bb;\n      *(Layout **)((int)ppGVar14 + -0x20) = layout;\n      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c1c1;\n      Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));\n      pOVar12 = this->dynbss_;\n    }\n  }\n  else {\n    pOVar12 = this->dynrelro_;\n    if (pOVar12 == (Output_data_space *)0x0) {\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c20d;\n      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);\n      *(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;\n      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;\n      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;\n      *puVar11 = *puVar11 & 0xe0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;\n      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645d1);\n      this->dynrelro_ = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -4) = 0;\n      *(undefined4 *)((int)ppGVar14 + -8) = 0x13;\n      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;\n      *(undefined4 *)((int)ppGVar14 + -0x18) = 1;\n      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645de;\n      *(Layout **)((int)ppGVar14 + -0x20) = layout;\n      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c284;\n      Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));\n      pOVar12 = this->dynrelro_;\n    }\n  }" if (parenthesized_expression "((char)uVar15 == '\0')" ( (binary_expression "(char)uVar15 == '\0'" (cast_expression "(char)uVar15" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pOVar12 = this->dynbss_;\n    if (pOVar12 == (Output_data_space *)0x0) {\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c14a;\n      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);\n      *(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;\n      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;\n      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;\n      *puVar11 = *puVar11 & 0xe0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;\n      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645c5);\n      this->dynbss_ = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -4) = 0;\n      *(undefined4 *)((int)ppGVar14 + -8) = 0x1b;\n      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;\n      *(undefined4 *)((int)ppGVar14 + -0x18) = 8;\n      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645bb;\n      *(Layout **)((int)ppGVar14 + -0x20) = layout;\n      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c1c1;\n      Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));\n      pOVar12 = this->dynbss_;\n    }\n  }" { (expression_statement "pOVar12 = this->dynbss_;" (assignment_expression "pOVar12 = this->dynbss_" identifier = (field_expression "this->dynbss_" identifier -> field_identifier)) ;) (if_statement "if (pOVar12 == (Output_data_space *)0x0) {\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c14a;\n      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);\n      *(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;\n      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;\n      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;\n      *puVar11 = *puVar11 & 0xe0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;\n      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645c5);\n      this->dynbss_ = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -4) = 0;\n      *(undefined4 *)((int)ppGVar14 + -8) = 0x1b;\n      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;\n      *(undefined4 *)((int)ppGVar14 + -0x18) = 8;\n      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645bb;\n      *(Layout **)((int)ppGVar14 + -0x20) = layout;\n      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c1c1;\n      Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));\n      pOVar12 = this->dynbss_;\n    }" if (parenthesized_expression "(pOVar12 == (Output_data_space *)0x0)" ( (binary_expression "pOVar12 == (Output_data_space *)0x0" identifier == (cast_expression "(Output_data_space *)0x0" ( (type_descriptor "Output_data_space *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c14a;\n      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);\n      *(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;\n      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;\n      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;\n      *puVar11 = *puVar11 & 0xe0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;\n      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645c5);\n      this->dynbss_ = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -4) = 0;\n      *(undefined4 *)((int)ppGVar14 + -8) = 0x1b;\n      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;\n      *(undefined4 *)((int)ppGVar14 + -0x18) = 8;\n      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645bb;\n      *(Layout **)((int)ppGVar14 + -0x20) = layout;\n      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c1c1;\n      Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));\n      pOVar12 = this->dynbss_;\n    }" { (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x10) = 0x30" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x10)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c14a;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c14a" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x14)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));" (assignment_expression "pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10))" identifier = (cast_expression "(Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10))" ( (type_descriptor "Output_data_space *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(*(uint *)((int)ppGVar14 + -0x10))" identifier (argument_list "(*(uint *)((int)ppGVar14 + -0x10))" ( (pointer_expression "*(uint *)((int)ppGVar14 + -0x10)" * (cast_expression "(uint *)((int)ppGVar14 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) (expression_statement "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;" (assignment_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0" (pointer_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_" * (cast_expression "(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)))) = number_literal) ;) (expression_statement "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);" (assignment_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c)" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(_func_int_varargs **)(ppuVar6 + -0x384c)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(ppuVar6 + -0x384c)" ( (binary_expression "ppuVar6 + -0x384c" identifier + number_literal) )))) ;) (expression_statement "*(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;" (assignment_expression "*(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c" (pointer_expression "*(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_" * (cast_expression "(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_" ( (type_descriptor "General_options **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier)))) = identifier) ;) (expression_statement "*(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;" (assignment_expression "*(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48" (pointer_expression "*(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4)" * (cast_expression "(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4)" ( (binary_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4" (cast_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;" (assignment_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0" (pointer_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4)" * (cast_expression "(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4)" ( (binary_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4" (cast_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;" (assignment_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0" (pointer_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_" * (cast_expression "(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;" (assignment_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0" (pointer_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4)" * (cast_expression "(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4)" ( (binary_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4" (cast_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;" (assignment_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff" (pointer_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_" * (cast_expression "(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff" (pointer_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4)" * (cast_expression "(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4)" ( (binary_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4" (cast_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;" (assignment_expression "puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c" identifier = (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "*puVar11 = *puVar11 & 0xe0;" (assignment_expression "*puVar11 = *puVar11 & 0xe0" (pointer_expression "*puVar11" * identifier) = (binary_expression "*puVar11 & 0xe0" (pointer_expression "*puVar11" * identifier) & number_literal)) ;) (expression_statement "(pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;" (assignment_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645c5);" (assignment_expression "pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645c5)" (field_expression "pOVar12->map_name_" identifier -> field_identifier) = (cast_expression "(char *)((int)ppuVar6 + -0x1645c5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar6 + -0x1645c5)" ( (binary_expression "(int)ppuVar6 + -0x1645c5" (cast_expression "(int)ppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "this->dynbss_ = pOVar12;" (assignment_expression "this->dynbss_ = pOVar12" (field_expression "this->dynbss_" identifier -> field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -4) = 0" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -4)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -4)" ( (binary_expression "(int)ppGVar14 + -4" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -8) = 0x1b;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -8) = 0x1b" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -8)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;" (assignment_expression "*(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12" (pointer_expression "*(Output_data_space **)((int)ppGVar14 + -0xc)" * (cast_expression "(Output_data_space **)((int)ppGVar14 + -0xc)" ( (type_descriptor "Output_data_space **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x10) = 0;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x10) = 0" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x10)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x14) = 3;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x14) = 3" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x14)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x18) = 8;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x18) = 8" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x18)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x18)" ( (binary_expression "(int)ppGVar14 + -0x18" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645bb;" (assignment_expression "*(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645bb" (pointer_expression "*(int *)((int)ppGVar14 + -0x1c)" * (cast_expression "(int *)((int)ppGVar14 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x1c)" ( (binary_expression "(int)ppGVar14 + -0x1c" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)ppuVar6 + -0x1645bb" (cast_expression "(int)ppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(Layout **)((int)ppGVar14 + -0x20) = layout;" (assignment_expression "*(Layout **)((int)ppGVar14 + -0x20) = layout" (pointer_expression "*(Layout **)((int)ppGVar14 + -0x20)" * (cast_expression "(Layout **)((int)ppGVar14 + -0x20)" ( (type_descriptor "Layout **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x20)" ( (binary_expression "(int)ppGVar14 + -0x20" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c1c1;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c1c1" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x24)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x24)" ( (binary_expression "(int)ppGVar14 + -0x24" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (labeled_statement "Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));" statement_identifier : (ERROR ":" :) (expression_statement "add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));" (call_expression "add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4))" identifier (argument_list "(*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4))" ( (pointer_expression "*(Layout **)((int)ppGVar14 + -0x20)" * (cast_expression "(Layout **)((int)ppGVar14 + -0x20)" ( (type_descriptor "Layout **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x20)" ( (binary_expression "(int)ppGVar14 + -0x20" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)ppGVar14 + -0x1c)" * (cast_expression "(char **)((int)ppGVar14 + -0x1c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x1c)" ( (binary_expression "(int)ppGVar14 + -0x1c" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Elf_Word *)((int)ppGVar14 + -0x18)" * (cast_expression "(Elf_Word *)((int)ppGVar14 + -0x18)" ( (type_descriptor "Elf_Word *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x18)" ( (binary_expression "(int)ppGVar14 + -0x18" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Elf_Xword *)((int)ppGVar14 + -0x14)" * (cast_expression "(Elf_Xword *)((int)ppGVar14 + -0x14)" ( (type_descriptor "Elf_Xword *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Output_section_data **)((int)ppGVar14 + -0xc)" * (cast_expression "(Output_section_data **)((int)ppGVar14 + -0xc)" ( (type_descriptor "Output_section_data **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Output_section_order *)((int)ppGVar14 + -8)" * (cast_expression "(Output_section_order *)((int)ppGVar14 + -8)" ( (type_descriptor "Output_section_order *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(bool *)((int)ppGVar14 + -4)" * (cast_expression "(bool *)((int)ppGVar14 + -4)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -4)" ( (binary_expression "(int)ppGVar14 + -4" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;)) (expression_statement "pOVar12 = this->dynbss_;" (assignment_expression "pOVar12 = this->dynbss_" identifier = (field_expression "this->dynbss_" identifier -> field_identifier)) ;) })) }) (else_clause "else {\n    pOVar12 = this->dynrelro_;\n    if (pOVar12 == (Output_data_space *)0x0) {\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c20d;\n      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);\n      *(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;\n      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;\n      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;\n      *puVar11 = *puVar11 & 0xe0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;\n      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645d1);\n      this->dynrelro_ = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -4) = 0;\n      *(undefined4 *)((int)ppGVar14 + -8) = 0x13;\n      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;\n      *(undefined4 *)((int)ppGVar14 + -0x18) = 1;\n      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645de;\n      *(Layout **)((int)ppGVar14 + -0x20) = layout;\n      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c284;\n      Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));\n      pOVar12 = this->dynrelro_;\n    }\n  }" else (compound_statement "{\n    pOVar12 = this->dynrelro_;\n    if (pOVar12 == (Output_data_space *)0x0) {\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c20d;\n      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);\n      *(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;\n      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;\n      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;\n      *puVar11 = *puVar11 & 0xe0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;\n      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645d1);\n      this->dynrelro_ = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -4) = 0;\n      *(undefined4 *)((int)ppGVar14 + -8) = 0x13;\n      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;\n      *(undefined4 *)((int)ppGVar14 + -0x18) = 1;\n      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645de;\n      *(Layout **)((int)ppGVar14 + -0x20) = layout;\n      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c284;\n      Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));\n      pOVar12 = this->dynrelro_;\n    }\n  }" { (expression_statement "pOVar12 = this->dynrelro_;" (assignment_expression "pOVar12 = this->dynrelro_" identifier = (field_expression "this->dynrelro_" identifier -> field_identifier)) ;) (if_statement "if (pOVar12 == (Output_data_space *)0x0) {\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c20d;\n      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);\n      *(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;\n      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;\n      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;\n      *puVar11 = *puVar11 & 0xe0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;\n      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645d1);\n      this->dynrelro_ = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -4) = 0;\n      *(undefined4 *)((int)ppGVar14 + -8) = 0x13;\n      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;\n      *(undefined4 *)((int)ppGVar14 + -0x18) = 1;\n      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645de;\n      *(Layout **)((int)ppGVar14 + -0x20) = layout;\n      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c284;\n      Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));\n      pOVar12 = this->dynrelro_;\n    }" if (parenthesized_expression "(pOVar12 == (Output_data_space *)0x0)" ( (binary_expression "pOVar12 == (Output_data_space *)0x0" identifier == (cast_expression "(Output_data_space *)0x0" ( (type_descriptor "Output_data_space *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c20d;\n      pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);\n      *(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;\n      *(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;\n      *(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;\n      *(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;\n      puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;\n      *puVar11 = *puVar11 & 0xe0;\n      (pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;\n      pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645d1);\n      this->dynrelro_ = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -4) = 0;\n      *(undefined4 *)((int)ppGVar14 + -8) = 0x13;\n      *(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;\n      *(undefined4 *)((int)ppGVar14 + -0x10) = 0;\n      *(undefined4 *)((int)ppGVar14 + -0x14) = 3;\n      *(undefined4 *)((int)ppGVar14 + -0x18) = 1;\n      *(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645de;\n      *(Layout **)((int)ppGVar14 + -0x20) = layout;\n      *(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c284;\n      Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));\n      pOVar12 = this->dynrelro_;\n    }" { (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x10) = 0x30;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x10) = 0x30" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x10)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c20d;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c20d" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x14)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10));" (assignment_expression "pOVar12 = (Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10))" identifier = (cast_expression "(Output_data_space *)operator_new(*(uint *)((int)ppGVar14 + -0x10))" ( (type_descriptor "Output_data_space *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(*(uint *)((int)ppGVar14 + -0x10))" identifier (argument_list "(*(uint *)((int)ppGVar14 + -0x10))" ( (pointer_expression "*(uint *)((int)ppGVar14 + -0x10)" * (cast_expression "(uint *)((int)ppGVar14 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) (expression_statement "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0;" (assignment_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_ = 0" (pointer_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_" * (cast_expression "(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        address_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)))) = number_literal) ;) (expression_statement "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c);" (assignment_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data = (_func_int_varargs **)(ppuVar6 + -0x384c)" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(_func_int_varargs **)(ppuVar6 + -0x384c)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(ppuVar6 + -0x384c)" ( (binary_expression "ppuVar6 + -0x384c" identifier + number_literal) )))) ;) (expression_statement "*(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c;" (assignment_expression "*(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_ = local_4c" (pointer_expression "*(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_" * (cast_expression "(General_options **)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_" ( (type_descriptor "General_options **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier)))) = identifier) ;) (expression_statement "*(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48;" (assignment_expression "*(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4) = local_48" (pointer_expression "*(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4)" * (cast_expression "(uint *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4)" ( (binary_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_ + 4" (cast_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                      addralign_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0;" (assignment_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4) = 0" (pointer_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4)" * (cast_expression "(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4)" ( (binary_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_ + 4" (cast_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .address_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0;" (assignment_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_ = 0" (pointer_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_" * (cast_expression "(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        data_size_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0;" (assignment_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4) = 0" (pointer_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4)" * (cast_expression "(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4)" ( (binary_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_ + 4" (cast_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .data_size_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff;" (assignment_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_ = 0xffffffff" (pointer_expression "*(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_" * (cast_expression "(undefined4 *)\n       &(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n        offset_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4) = 0xffffffff" (pointer_expression "*(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4)" * (cast_expression "(undefined4 *)\n       ((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4)" ( (binary_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_ + 4" (cast_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data\n              .offset_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c;" (assignment_expression "puVar11 = &(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c" identifier = (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.field_0x1c" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "*puVar11 = *puVar11 & 0xe0;" (assignment_expression "*puVar11 = *puVar11 & 0xe0" (pointer_expression "*puVar11" * identifier) = (binary_expression "*puVar11 & 0xe0" (pointer_expression "*puVar11" * identifier) & number_literal)) ;) (expression_statement "(pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0;" (assignment_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_ =\n           (Output_section *)0x0" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.output_section_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645d1);" (assignment_expression "pOVar12->map_name_ = (char *)((int)ppuVar6 + -0x1645d1)" (field_expression "pOVar12->map_name_" identifier -> field_identifier) = (cast_expression "(char *)((int)ppuVar6 + -0x1645d1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar6 + -0x1645d1)" ( (binary_expression "(int)ppuVar6 + -0x1645d1" (cast_expression "(int)ppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "this->dynrelro_ = pOVar12;" (assignment_expression "this->dynrelro_ = pOVar12" (field_expression "this->dynrelro_" identifier -> field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -4) = 0" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -4)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -4)" ( (binary_expression "(int)ppGVar14 + -4" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -8) = 0x13;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -8) = 0x13" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -8)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12;" (assignment_expression "*(Output_data_space **)((int)ppGVar14 + -0xc) = pOVar12" (pointer_expression "*(Output_data_space **)((int)ppGVar14 + -0xc)" * (cast_expression "(Output_data_space **)((int)ppGVar14 + -0xc)" ( (type_descriptor "Output_data_space **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x10) = 0;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x10) = 0" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x10)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x14) = 3;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x14) = 3" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x14)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x18) = 1;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x18) = 1" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x18)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x18)" ( (binary_expression "(int)ppGVar14 + -0x18" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645de;" (assignment_expression "*(int *)((int)ppGVar14 + -0x1c) = (int)ppuVar6 + -0x1645de" (pointer_expression "*(int *)((int)ppGVar14 + -0x1c)" * (cast_expression "(int *)((int)ppGVar14 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x1c)" ( (binary_expression "(int)ppGVar14 + -0x1c" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)ppuVar6 + -0x1645de" (cast_expression "(int)ppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(Layout **)((int)ppGVar14 + -0x20) = layout;" (assignment_expression "*(Layout **)((int)ppGVar14 + -0x20) = layout" (pointer_expression "*(Layout **)((int)ppGVar14 + -0x20)" * (cast_expression "(Layout **)((int)ppGVar14 + -0x20)" ( (type_descriptor "Layout **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x20)" ( (binary_expression "(int)ppGVar14 + -0x20" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c284;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c284" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x24)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x24)" ( (binary_expression "(int)ppGVar14 + -0x24" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (labeled_statement "Layout::add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));" statement_identifier : (ERROR ":" :) (expression_statement "add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));" (call_expression "add_output_section_data\n                (*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4))" identifier (argument_list "(*(Layout **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),\n                 *(Elf_Word *)((int)ppGVar14 + -0x18),*(Elf_Xword *)((int)ppGVar14 + -0x14),\n                 *(Output_section_data **)((int)ppGVar14 + -0xc),\n                 *(Output_section_order *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4))" ( (pointer_expression "*(Layout **)((int)ppGVar14 + -0x20)" * (cast_expression "(Layout **)((int)ppGVar14 + -0x20)" ( (type_descriptor "Layout **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x20)" ( (binary_expression "(int)ppGVar14 + -0x20" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)ppGVar14 + -0x1c)" * (cast_expression "(char **)((int)ppGVar14 + -0x1c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x1c)" ( (binary_expression "(int)ppGVar14 + -0x1c" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Elf_Word *)((int)ppGVar14 + -0x18)" * (cast_expression "(Elf_Word *)((int)ppGVar14 + -0x18)" ( (type_descriptor "Elf_Word *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x18)" ( (binary_expression "(int)ppGVar14 + -0x18" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Elf_Xword *)((int)ppGVar14 + -0x14)" * (cast_expression "(Elf_Xword *)((int)ppGVar14 + -0x14)" ( (type_descriptor "Elf_Xword *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Output_section_data **)((int)ppGVar14 + -0xc)" * (cast_expression "(Output_section_data **)((int)ppGVar14 + -0xc)" ( (type_descriptor "Output_section_data **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Output_section_order *)((int)ppGVar14 + -8)" * (cast_expression "(Output_section_order *)((int)ppGVar14 + -8)" ( (type_descriptor "Output_section_order *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(bool *)((int)ppGVar14 + -4)" * (cast_expression "(bool *)((int)ppGVar14 + -4)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -4)" ( (binary_expression "(int)ppGVar14 + -4" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;)) (expression_statement "pOVar12 = this->dynrelro_;" (assignment_expression "pOVar12 = this->dynrelro_" identifier = (field_expression "this->dynrelro_" identifier -> field_identifier)) ;) })) }))) (expression_statement "ppuVar6 = (undefined **)\n            (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            _vptr_Output_data[3];" (assignment_expression "ppuVar6 = (undefined **)\n            (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            _vptr_Output_data[3]" identifier = (cast_expression "(undefined **)\n            (pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            _vptr_Output_data[3]" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            _vptr_Output_data[3]" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            _vptr_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ]))) ;) (if_statement "if (ppuVar6 == local_50 + -0x15e484) {\n    uVar16 = (pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_;\n  }\n  else {\n    *(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12;\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1f6;\n    uVar16 = (*(code *)ppuVar6)();\n  }" if (parenthesized_expression "(ppuVar6 == local_50 + -0x15e484)" ( (binary_expression "ppuVar6 == local_50 + -0x15e484" identifier == (binary_expression "local_50 + -0x15e484" identifier + number_literal)) )) (compound_statement "{\n    uVar16 = (pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_;\n  }" { (expression_statement "uVar16 = (pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_;" (assignment_expression "uVar16 = (pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_" identifier = (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.addralign_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n    *(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12;\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1f6;\n    uVar16 = (*(code *)ppuVar6)();\n  }" else (compound_statement "{\n    *(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12;\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1f6;\n    uVar16 = (*(code *)ppuVar6)();\n  }" { (expression_statement "*(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12;" (assignment_expression "*(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12" (pointer_expression "*(Output_data_space **)((int)ppGVar14 + -0x10)" * (cast_expression "(Output_data_space **)((int)ppGVar14 + -0x10)" ( (type_descriptor "Output_data_space **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1f6;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1f6" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x14)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar16 = (*(code *)ppuVar6)();" (assignment_expression "uVar16 = (*(code *)ppuVar6)()" identifier = (call_expression "(*(code *)ppuVar6)()" (parenthesized_expression "(*(code *)ppuVar6)" ( (pointer_expression "*(code *)ppuVar6" * (cast_expression "(code *)ppuVar6" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) }))) (expression_statement "uVar15 = (uint)(uVar16 >> 0x20);" (assignment_expression "uVar15 = (uint)(uVar16 >> 0x20)" identifier = (call_expression "(uint)(uVar16 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar16 >> 0x20)" ( (binary_expression "uVar16 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "pGVar13 = local_4c;" (assignment_expression "pGVar13 = local_4c" identifier = identifier) ;) (if_statement "if (uVar15 < local_48 || uVar15 - local_48 < (uint)((uint)uVar16 < local_4c)) {\n    *(uint *)((int)ppGVar14 + -8) = local_48;\n    *(General_options **)((int)ppGVar14 + -0xc) = local_4c;\n    *(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12;\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1de;\n    Output_section_data::set_addralign\n              (*(Output_section_data **)((int)ppGVar14 + -0x10),*(uint64_t *)((int)ppGVar14 + -0xc))\n    ;\n    pGVar13 = (General_options *)extraout_ECX;\n  }" if (parenthesized_expression "(uVar15 < local_48 || uVar15 - local_48 < (uint)((uint)uVar16 < local_4c))" ( (binary_expression "uVar15 < local_48 || uVar15 - local_48 < (uint)((uint)uVar16 < local_4c)" (binary_expression "uVar15 < local_48" identifier < identifier) || (binary_expression "uVar15 - local_48 < (uint)((uint)uVar16 < local_4c)" (binary_expression "uVar15 - local_48" identifier - identifier) < (call_expression "(uint)((uint)uVar16 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)uVar16 < local_4c)" ( (binary_expression "(uint)uVar16 < local_4c" (cast_expression "(uint)uVar16" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) ))))) )) (compound_statement "{\n    *(uint *)((int)ppGVar14 + -8) = local_48;\n    *(General_options **)((int)ppGVar14 + -0xc) = local_4c;\n    *(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12;\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1de;\n    Output_section_data::set_addralign\n              (*(Output_section_data **)((int)ppGVar14 + -0x10),*(uint64_t *)((int)ppGVar14 + -0xc))\n    ;\n    pGVar13 = (General_options *)extraout_ECX;\n  }" { (expression_statement "*(uint *)((int)ppGVar14 + -8) = local_48;" (assignment_expression "*(uint *)((int)ppGVar14 + -8) = local_48" (pointer_expression "*(uint *)((int)ppGVar14 + -8)" * (cast_expression "(uint *)((int)ppGVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(General_options **)((int)ppGVar14 + -0xc) = local_4c;" (assignment_expression "*(General_options **)((int)ppGVar14 + -0xc) = local_4c" (pointer_expression "*(General_options **)((int)ppGVar14 + -0xc)" * (cast_expression "(General_options **)((int)ppGVar14 + -0xc)" ( (type_descriptor "General_options **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12;" (assignment_expression "*(Output_data_space **)((int)ppGVar14 + -0x10) = pOVar12" (pointer_expression "*(Output_data_space **)((int)ppGVar14 + -0x10)" * (cast_expression "(Output_data_space **)((int)ppGVar14 + -0x10)" ( (type_descriptor "Output_data_space **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1de;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c1de" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x14)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (labeled_statement "Output_section_data::set_addralign\n              (*(Output_section_data **)((int)ppGVar14 + -0x10),*(uint64_t *)((int)ppGVar14 + -0xc))\n    ;" statement_identifier : (ERROR ":" :) (expression_statement "set_addralign\n              (*(Output_section_data **)((int)ppGVar14 + -0x10),*(uint64_t *)((int)ppGVar14 + -0xc))\n    ;" (call_expression "set_addralign\n              (*(Output_section_data **)((int)ppGVar14 + -0x10),*(uint64_t *)((int)ppGVar14 + -0xc))" identifier (argument_list "(*(Output_section_data **)((int)ppGVar14 + -0x10),*(uint64_t *)((int)ppGVar14 + -0xc))" ( (pointer_expression "*(Output_section_data **)((int)ppGVar14 + -0x10)" * (cast_expression "(Output_section_data **)((int)ppGVar14 + -0x10)" ( (type_descriptor "Output_section_data **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(uint64_t *)((int)ppGVar14 + -0xc)" * (cast_expression "(uint64_t *)((int)ppGVar14 + -0xc)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;)) (expression_statement "pGVar13 = (General_options *)extraout_ECX;" (assignment_expression "pGVar13 = (General_options *)extraout_ECX" identifier = (cast_expression "(General_options *)extraout_ECX" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "uVar15 = (uint)(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_;" (assignment_expression "uVar15 = (uint)(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_" identifier = (field_expression "(uint)(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_" (field_expression "(uint)(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data" (field_expression "(uint)(pOVar12->super_Output_section_data_build).super_Output_section_data" (call_expression "(uint)(pOVar12->super_Output_section_data_build)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) ))) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (*(int *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.data_size_ + 4) != 0) {\n    *(General_options **)((int)ppGVar14 + -4) = pGVar13;\n    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x5911e;\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xc0;\n    *(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x672d3;\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c331;\n    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));\n  }" if (parenthesized_expression "(*(int *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.data_size_ + 4) != 0)" ( (binary_expression "*(int *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.data_size_ + 4) != 0" (pointer_expression "*(int *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.data_size_ + 4)" * (cast_expression "(int *)((int)&(pOVar12->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)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.data_size_ + 4)" ( (binary_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.data_size_ + 4" (cast_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.data_size_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data.data_size_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                     super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(General_options **)((int)ppGVar14 + -4) = pGVar13;\n    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x5911e;\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0xc0;\n    *(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x672d3;\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c331;\n    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));\n  }" { (expression_statement "*(General_options **)((int)ppGVar14 + -4) = pGVar13;" (assignment_expression "*(General_options **)((int)ppGVar14 + -4) = pGVar13" (pointer_expression "*(General_options **)((int)ppGVar14 + -4)" * (cast_expression "(General_options **)((int)ppGVar14 + -4)" ( (type_descriptor "General_options **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -4)" ( (binary_expression "(int)ppGVar14 + -4" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x5911e;" (assignment_expression "*(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x5911e" (pointer_expression "*(undefined ***)((int)ppGVar14 + -8)" * (cast_expression "(undefined ***)((int)ppGVar14 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x5911e" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0xc) = 0xc0;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0xc) = 0xc0" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0xc)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x672d3;" (assignment_expression "*(undefined ***)((int)ppGVar14 + -0x10) = local_50 + -0x672d3" (pointer_expression "*(undefined ***)((int)ppGVar14 + -0x10)" * (cast_expression "(undefined ***)((int)ppGVar14 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x672d3" identifier + number_literal)) ;) comment (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c331;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c331" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x14)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));" (call_expression "do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8))" identifier (argument_list "(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8))" ( (pointer_expression "*(char **)((int)ppGVar14 + -0x10)" * (cast_expression "(char **)((int)ppGVar14 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(int *)((int)ppGVar14 + -0xc)" * (cast_expression "(int *)((int)ppGVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)ppGVar14 + -8)" * (cast_expression "(char **)((int)ppGVar14 + -8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) })) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_44 = (Object *)uVar15;" (assignment_expression "local_44 = (Object *)uVar15" identifier = (cast_expression "(Object *)uVar15" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_48 != 0 || local_4c != (General_options *)0x0) {\n    local_44 = (Object *)(-(int)local_4c & ((int)local_4c - 1U) + uVar15);\n  }" if (parenthesized_expression "(local_48 != 0 || local_4c != (General_options *)0x0)" ( (binary_expression "local_48 != 0 || local_4c != (General_options *)0x0" (binary_expression "local_48 != 0" identifier != number_literal) || (binary_expression "local_4c != (General_options *)0x0" identifier != (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n    local_44 = (Object *)(-(int)local_4c & ((int)local_4c - 1U) + uVar15);\n  }" { (expression_statement "local_44 = (Object *)(-(int)local_4c & ((int)local_4c - 1U) + uVar15);" (assignment_expression "local_44 = (Object *)(-(int)local_4c & ((int)local_4c - 1U) + uVar15)" identifier = (cast_expression "(Object *)(-(int)local_4c & ((int)local_4c - 1U) + uVar15)" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(-(int)local_4c & ((int)local_4c - 1U) + uVar15)" ( (binary_expression "-(int)local_4c & ((int)local_4c - 1U) + uVar15" (unary_expression "-(int)local_4c" - (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) & (binary_expression "((int)local_4c - 1U) + uVar15" (parenthesized_expression "((int)local_4c - 1U)" ( (binary_expression "(int)local_4c - 1U" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )) + identifier)) )))) ;) })) (expression_statement "iVar10 = local_58 + (uint)CARRY4(local_5c,(uint)local_44);" (assignment_expression "iVar10 = local_58 + (uint)CARRY4(local_5c,(uint)local_44)" identifier = (binary_expression "local_58 + (uint)CARRY4(local_5c,(uint)local_44)" identifier + (cast_expression "(uint)CARRY4(local_5c,(uint)local_44)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_5c,(uint)local_44)" identifier (argument_list "(local_5c,(uint)local_44)" ( identifier , (cast_expression "(uint)local_44" ( (type_descriptor "uint" type_identifier) ) identifier) )))))) ;) (if_statement "if (((pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n       field_0x1c & 2) != 0) {\n    *(int *)((int)ppGVar14 + -4) = iVar10;\n    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e0;\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0x231;\n    *(int *)((int)ppGVar14 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c315;\n    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));\n  }" if (parenthesized_expression "(((pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n       field_0x1c & 2) != 0)" ( (binary_expression "((pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n       field_0x1c & 2) != 0" (parenthesized_expression "((pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n       field_0x1c & 2)" ( (binary_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n       field_0x1c & 2" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n       field_0x1c" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    *(int *)((int)ppGVar14 + -4) = iVar10;\n    *(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e0;\n    *(undefined4 *)((int)ppGVar14 + -0xc) = 0x231;\n    *(int *)((int)ppGVar14 + -0x10) = (int)local_50 + -0x19cca3;\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c315;\n    do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));\n  }" { (expression_statement "*(int *)((int)ppGVar14 + -4) = iVar10;" (assignment_expression "*(int *)((int)ppGVar14 + -4) = iVar10" (pointer_expression "*(int *)((int)ppGVar14 + -4)" * (cast_expression "(int *)((int)ppGVar14 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -4)" ( (binary_expression "(int)ppGVar14 + -4" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e0;" (assignment_expression "*(undefined ***)((int)ppGVar14 + -8) = local_50 + -0x590e0" (pointer_expression "*(undefined ***)((int)ppGVar14 + -8)" * (cast_expression "(undefined ***)((int)ppGVar14 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x590e0" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0xc) = 0x231;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0xc) = 0x231" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0xc)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppGVar14 + -0x10) = (int)local_50 + -0x19cca3;" (assignment_expression "*(int *)((int)ppGVar14 + -0x10) = (int)local_50 + -0x19cca3" (pointer_expression "*(int *)((int)ppGVar14 + -0x10)" * (cast_expression "(int *)((int)ppGVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)local_50 + -0x19cca3" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) comment (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c315;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x14) = 0x22c315" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x14)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8));" (call_expression "do_gold_unreachable(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8))" identifier (argument_list "(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),\n                        *(char **)((int)ppGVar14 + -8))" ( (pointer_expression "*(char **)((int)ppGVar14 + -0x10)" * (cast_expression "(char **)((int)ppGVar14 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(int *)((int)ppGVar14 + -0xc)" * (cast_expression "(int *)((int)ppGVar14 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)ppGVar14 + -8)" * (cast_expression "(char **)((int)ppGVar14 + -8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) })) (expression_statement "*(uint *)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_ = local_5c + (int)local_44;" (assignment_expression "*(uint *)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_ = local_5c + (int)local_44" (pointer_expression "*(uint *)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_" * (cast_expression "(uint *)&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)))) = (binary_expression "local_5c + (int)local_44" identifier + (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(int *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_ + 4) = iVar10;" (assignment_expression "*(int *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_ + 4) = iVar10" (pointer_expression "*(int *)((int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_ + 4)" * (cast_expression "(int *)((int)&(pOVar12->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)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_ + 4)" ( (binary_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_ + 4" (cast_expression "(int)&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_" & (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data.data_size_" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data.\n                 super_Output_data" (field_expression "(pOVar12->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar12->super_Output_section_data_build)" ( (field_expression "pOVar12->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8) = reloc_section;" (assignment_expression "*(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8) = reloc_section" (pointer_expression "*(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8)" * (call_expression "(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8)" (parenthesized_expression "(Output_data_reloc<4,_true,_64,_false> **)" ( (comma_expression "Output_data_reloc<4,_true,_64,_false> **" (binary_expression "Output_data_reloc<4" identifier < number_literal) , (comma_expression "_true,_64,_false> **" identifier , (comma_expression "_64,_false> **" identifier , (binary_expression "_false> **" identifier > (pointer_expression "**" * (pointer_expression "*" * identifier)))))) )) (argument_list "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0xc) = 0;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0xc) = 0" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0xc)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0xc)" ( (binary_expression "(int)ppGVar14 + -0xc" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(Object **)((int)ppGVar14 + -0x10) = local_44;" (assignment_expression "*(Object **)((int)ppGVar14 + -0x10) = local_44" (pointer_expression "*(Object **)((int)ppGVar14 + -0x10)" * (cast_expression "(Object **)((int)ppGVar14 + -0x10)" ( (type_descriptor "Object **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(Output_data_space **)((int)ppGVar14 + -0x14) = pOVar12;" (assignment_expression "*(Output_data_space **)((int)ppGVar14 + -0x14) = pOVar12" (pointer_expression "*(Output_data_space **)((int)ppGVar14 + -0x14)" * (cast_expression "(Output_data_space **)((int)ppGVar14 + -0x14)" ( (type_descriptor "Output_data_space **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(Sized_symbol<64> **)((int)ppGVar14 + -0x18) = sym;" (assignment_expression "*(Sized_symbol<64> **)((int)ppGVar14 + -0x18) = sym" (pointer_expression "*(Sized_symbol<64> **)((int)ppGVar14 + -0x18)" * (call_expression "(Sized_symbol<64> **)((int)ppGVar14 + -0x18)" (parenthesized_expression "(Sized_symbol<64> **)" ( (binary_expression "Sized_symbol<64> **" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "((int)ppGVar14 + -0x18)" ( (binary_expression "(int)ppGVar14 + -0x18" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(Symbol_table **)((int)ppGVar14 + -0x1c) = symtab;" (assignment_expression "*(Symbol_table **)((int)ppGVar14 + -0x1c) = symtab" (pointer_expression "*(Symbol_table **)((int)ppGVar14 + -0x1c)" * (cast_expression "(Symbol_table **)((int)ppGVar14 + -0x1c)" ( (type_descriptor "Symbol_table **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x1c)" ( (binary_expression "(int)ppGVar14 + -0x1c" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20) = this;" (assignment_expression "*(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20) = this" (pointer_expression "*(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20)" * (call_expression "(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20)" (parenthesized_expression "(Copy_relocs<4,_64,_false> **)" ( (comma_expression "Copy_relocs<4,_64,_false> **" (binary_expression "Copy_relocs<4" identifier < number_literal) , (comma_expression "_64,_false> **" identifier , (binary_expression "_false> **" identifier > (pointer_expression "**" * (pointer_expression "*" * identifier))))) )) (argument_list "((int)ppGVar14 + -0x20)" ( (binary_expression "(int)ppGVar14 + -0x20" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c081;" (assignment_expression "*(undefined4 *)((int)ppGVar14 + -0x24) = 0x22c081" (pointer_expression "*(undefined4 *)((int)ppGVar14 + -0x24)" * (cast_expression "(undefined4 *)((int)ppGVar14 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x24)" ( (binary_expression "(int)ppGVar14 + -0x24" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "emit_copy_reloc(*(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20),\n                  *(Symbol_table **)((int)ppGVar14 + -0x1c),\n                  *(Sized_symbol<64> **)((int)ppGVar14 + -0x18),\n                  *(Output_data **)((int)ppGVar14 + -0x14),*(off_t *)((int)ppGVar14 + -0x10),\n                  *(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8));" (call_expression "emit_copy_reloc(*(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20),\n                  *(Symbol_table **)((int)ppGVar14 + -0x1c),\n                  *(Sized_symbol<64> **)((int)ppGVar14 + -0x18),\n                  *(Output_data **)((int)ppGVar14 + -0x14),*(off_t *)((int)ppGVar14 + -0x10),\n                  *(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8))" identifier (argument_list "(*(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20),\n                  *(Symbol_table **)((int)ppGVar14 + -0x1c),\n                  *(Sized_symbol<64> **)((int)ppGVar14 + -0x18),\n                  *(Output_data **)((int)ppGVar14 + -0x14),*(off_t *)((int)ppGVar14 + -0x10),\n                  *(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8))" ( (pointer_expression "*(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20)" * (call_expression "(Copy_relocs<4,_64,_false> **)((int)ppGVar14 + -0x20)" (parenthesized_expression "(Copy_relocs<4,_64,_false> **)" ( (comma_expression "Copy_relocs<4,_64,_false> **" (binary_expression "Copy_relocs<4" identifier < number_literal) , (comma_expression "_64,_false> **" identifier , (binary_expression "_false> **" identifier > (pointer_expression "**" * (pointer_expression "*" * identifier))))) )) (argument_list "((int)ppGVar14 + -0x20)" ( (binary_expression "(int)ppGVar14 + -0x20" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Symbol_table **)((int)ppGVar14 + -0x1c)" * (cast_expression "(Symbol_table **)((int)ppGVar14 + -0x1c)" ( (type_descriptor "Symbol_table **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x1c)" ( (binary_expression "(int)ppGVar14 + -0x1c" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Sized_symbol<64> **)((int)ppGVar14 + -0x18)" * (call_expression "(Sized_symbol<64> **)((int)ppGVar14 + -0x18)" (parenthesized_expression "(Sized_symbol<64> **)" ( (binary_expression "Sized_symbol<64> **" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "((int)ppGVar14 + -0x18)" ( (binary_expression "(int)ppGVar14 + -0x18" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Output_data **)((int)ppGVar14 + -0x14)" * (cast_expression "(Output_data **)((int)ppGVar14 + -0x14)" ( (type_descriptor "Output_data **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppGVar14 + -0x14)" ( (binary_expression "(int)ppGVar14 + -0x14" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(off_t *)((int)ppGVar14 + -0x10)" * (cast_expression "(off_t *)((int)ppGVar14 + -0x10)" ( (type_descriptor "off_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppGVar14 + -0x10)" ( (binary_expression "(int)ppGVar14 + -0x10" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8)" * (call_expression "(Output_data_reloc<4,_true,_64,_false> **)((int)ppGVar14 + -8)" (parenthesized_expression "(Output_data_reloc<4,_true,_64,_false> **)" ( (comma_expression "Output_data_reloc<4,_true,_64,_false> **" (binary_expression "Output_data_reloc<4" identifier < number_literal) , (comma_expression "_true,_64,_false> **" identifier , (comma_expression "_64,_false> **" identifier , (binary_expression "_false> **" identifier > (pointer_expression "**" * (pointer_expression "*" * identifier)))))) )) (argument_list "((int)ppGVar14 + -8)" ( (binary_expression "(int)ppGVar14 + -8" (cast_expression "(int)ppGVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_0022be00(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,int param_5,\n                 undefined4 param_6)\n\n{\n  undefined4 *puVar1;\n  undefined **ppuVar2;\n  undefined4 uVar3;\n  ulonglong uVar4;\n  ulonglong uVar5;\n  longlong lVar6;\n  uint uVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint extraout_ECX;\n  undefined4 **ppuVar12;\n  uint uVar13;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  undefined4 *puStack_60;\n  uint local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined **local_50;\n  undefined8 local_4c;\n  undefined8 local_44;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_50 = &__DT_PLTGOT;\n  puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n  if (puVar1 == (undefined4 *)0x0) {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)((int)puVar1 + 0x52d9) == '\0') {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }\n  if ((*(byte *)(param_4 + 0xb) & 8) == 0) {\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }\n  else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }\n  local_54 = param_4[3];\n  if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    \n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    \n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }\n  puStack_60 = param_4;\n                    \n  FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);\n}\n\n" (function_definition "void FUN_0022be00(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,int param_5,\n                 undefined4 param_6)\n\n{\n  undefined4 *puVar1;\n  undefined **ppuVar2;\n  undefined4 uVar3;\n  ulonglong uVar4;\n  ulonglong uVar5;\n  longlong lVar6;\n  uint uVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint extraout_ECX;\n  undefined4 **ppuVar12;\n  uint uVar13;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  undefined4 *puStack_60;\n  uint local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined **local_50;\n  undefined8 local_4c;\n  undefined8 local_44;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_50 = &__DT_PLTGOT;\n  puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n  if (puVar1 == (undefined4 *)0x0) {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)((int)puVar1 + 0x52d9) == '\0') {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }\n  if ((*(byte *)(param_4 + 0xb) & 8) == 0) {\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }\n  else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }\n  local_54 = param_4[3];\n  if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    \n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    \n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }\n  puStack_60 = param_4;\n                    \n  FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);\n}" primitive_type (function_declarator "FUN_0022be00(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,int param_5,\n                 undefined4 param_6)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,int param_5,\n                 undefined4 param_6)" ( (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 "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined **ppuVar2;\n  undefined4 uVar3;\n  ulonglong uVar4;\n  ulonglong uVar5;\n  longlong lVar6;\n  uint uVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint extraout_ECX;\n  undefined4 **ppuVar12;\n  uint uVar13;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  undefined4 *puStack_60;\n  uint local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined **local_50;\n  undefined8 local_4c;\n  undefined8 local_44;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_50 = &__DT_PLTGOT;\n  puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n  if (puVar1 == (undefined4 *)0x0) {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)((int)puVar1 + 0x52d9) == '\0') {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }\n  if ((*(byte *)(param_4 + 0xb) & 8) == 0) {\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }\n  else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }\n  local_54 = param_4[3];\n  if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    \n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    \n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }\n  puStack_60 = param_4;\n                    \n  FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined **ppuVar2;" type_identifier (pointer_declarator "**ppuVar2" * (pointer_declarator "*ppuVar2" * identifier)) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "ulonglong uVar5;" type_identifier identifier ;) (declaration "longlong lVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "undefined4 **ppuVar12;" type_identifier (pointer_declarator "**ppuVar12" * (pointer_declarator "*ppuVar12" * identifier)) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "undefined4 *puStack_60;" type_identifier (pointer_declarator "*puStack_60" * identifier) ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined **local_50;" type_identifier (pointer_declarator "**local_50" * (pointer_declarator "*local_50" * identifier)) ;) (declaration "undefined8 local_4c;" type_identifier identifier ;) (declaration "undefined8 local_44;" type_identifier identifier ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "local_50 = &__DT_PLTGOT;" (assignment_expression "local_50 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);" (assignment_expression "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8)" identifier = (pointer_expression "*(undefined4 **)(DAT_005ea7c8 + 8)" * (cast_expression "(undefined4 **)(DAT_005ea7c8 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_005ea7c8 + 8)" ( (binary_expression "DAT_005ea7c8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 == (undefined4 *)0x0) {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" ( (binary_expression "puVar1 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }" { (expression_statement "puStack_60 = puVar1;" (assignment_expression "puStack_60 = puVar1" identifier = identifier) ;) (expression_statement "FUN_002446e0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_002446e0("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)((int)puVar1 + 0x52d9) == '\0') {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }" if (parenthesized_expression "(*(char *)((int)puVar1 + 0x52d9) == '\0')" ( (binary_expression "*(char *)((int)puVar1 + 0x52d9) == '\0'" (pointer_expression "*(char *)((int)puVar1 + 0x52d9)" * (cast_expression "(char *)((int)puVar1 + 0x52d9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + 0x52d9)" ( (binary_expression "(int)puVar1 + 0x52d9" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }" { (expression_statement "puStack_60 = puVar1;" (assignment_expression "puStack_60 = puVar1" identifier = identifier) ;) (expression_statement "FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");" (call_expression "FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc")" identifier (argument_list "("../../gold/copy-relocs.cc",0x76,"make_copy_reloc")" ( (string_literal ""../../gold/copy-relocs.cc"" " string_content ") , number_literal , (string_literal ""make_copy_reloc"" " string_content ") ))) ;) })) (if_statement "if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }" if (parenthesized_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0))" ( (binary_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)" (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(byte *)(param_4[2] + 0x2c) & 1) == 0)" ( (binary_expression "(*(byte *)(param_4[2] + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(param_4[2] + 0x2c) & 1)" ( (binary_expression "*(byte *)(param_4[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" * (cast_expression "(byte *)(param_4[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 0x2c)" ( (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }" { (expression_statement "FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");" (call_expression "FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc")" identifier (argument_list "("../../gold/copy-relocs.cc",0x78,"make_copy_reloc")" ( (string_literal ""../../gold/copy-relocs.cc"" " string_content ") , number_literal , (string_literal ""make_copy_reloc"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(param_4 + 0xb) & 8) == 0) {\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }\n  else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 8) == 0)" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 8)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 8" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }" { (expression_statement "local_58 = param_4[0xf];" (assignment_expression "local_58 = param_4[0xf]" identifier = (subscript_expression "param_4[0xf]" identifier [ number_literal ])) ;) (expression_statement "local_5c = param_4[0xe];" (assignment_expression "local_5c = param_4[0xe]" identifier = (subscript_expression "param_4[0xe]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }" else (compound_statement "{\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }" { (expression_statement "local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);" (assignment_expression "local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4)" (field_expression "local_4c._0_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 **)(param_4[2] + 4)" * (cast_expression "(undefined4 **)(param_4[2] + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4[2] + 4)" ( (binary_expression "param_4[2] + 4" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "local_44._0_4_ = (int *)*param_4;" (assignment_expression "local_44._0_4_ = (int *)*param_4" (field_expression "local_44._0_4_" identifier . field_identifier) = (cast_expression "(int *)*param_4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "uVar3 = *(undefined4 *)(param_5 + 4);" (assignment_expression "uVar3 = *(undefined4 *)(param_5 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_5 + 4)" * (cast_expression "(undefined4 *)(param_5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 4)" ( (binary_expression "param_5 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");" (assignment_expression "uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s")" identifier = (call_expression "gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s")" identifier (argument_list "("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s")" ( (string_literal ""%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"" " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement "puStack_60 = (undefined4 *)local_4c;" (assignment_expression "puStack_60 = (undefined4 *)local_4c" identifier = (cast_expression "(undefined4 *)local_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "FUN_0023b810(uVar10,uVar3,(int *)local_44);" (call_expression "FUN_0023b810(uVar10,uVar3,(int *)local_44)" identifier (argument_list "(uVar10,uVar3,(int *)local_44)" ( identifier , identifier , (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "local_58 = param_4[0xf];" (assignment_expression "local_58 = param_4[0xf]" identifier = (subscript_expression "param_4[0xf]" identifier [ number_literal ])) ;) (expression_statement "local_5c = param_4[0xe];" (assignment_expression "local_5c = param_4[0xe]" identifier = (subscript_expression "param_4[0xe]" identifier [ number_literal ])) ;) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }" { (expression_statement "puStack_60 = param_4;" (assignment_expression "puStack_60 = param_4" identifier = identifier) ;) (expression_statement "FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);" (call_expression "FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1)" identifier (argument_list "(local_50 + -0x67308,0xaa,local_50 + -0x590f1)" ( (binary_expression "local_50 + -0x67308" identifier + number_literal) , number_literal , (binary_expression "local_50 + -0x590f1" identifier + number_literal) ))) ;) })) }))) (expression_statement "local_54 = param_4[3];" (assignment_expression "local_54 = param_4[3]" identifier = (subscript_expression "param_4[3]" identifier [ number_literal ])) ;) (if_statement "if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    \n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    \n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)((int)param_4 + 0x2b) & 0x20" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    \n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    \n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }" { (expression_statement "local_44._0_4_ = (int *)param_4[2];" (assignment_expression "local_44._0_4_ = (int *)param_4[2]" (field_expression "local_44._0_4_" identifier . field_identifier) = (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) (if_statement "if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }" if (parenthesized_expression "(((int *)local_44)[7] != 0)" ( (binary_expression "((int *)local_44)[7] != 0" (subscript_expression "((int *)local_44)[7]" (parenthesized_expression "((int *)local_44)" ( (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) != number_literal) )) (compound_statement "{\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }" { (expression_statement "FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);" (call_expression "FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff)" identifier (argument_list "(((int *)local_44)[7] + 0x1c,0xffffffff)" ( (binary_expression "((int *)local_44)[7] + 0x1c" (subscript_expression "((int *)local_44)[7]" (parenthesized_expression "((int *)local_44)" ( (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) + number_literal) , number_literal ))) ;) })) (expression_statement "local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);" (assignment_expression "local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54)" identifier = (call_expression "(**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54)" (parenthesized_expression "(**(code **)(*(int *)local_44 + 0x5c))" ( (pointer_expression "**(code **)(*(int *)local_44 + 0x5c)" * (pointer_expression "*(code **)(*(int *)local_44 + 0x5c)" * (cast_expression "(code **)(*(int *)local_44 + 0x5c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_44 + 0x5c)" ( (binary_expression "*(int *)local_44 + 0x5c" (pointer_expression "*(int *)local_44" * (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "((int *)local_44,local_54)" ( (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "piVar11 = (int *)local_44;" (assignment_expression "piVar11 = (int *)local_44" identifier = (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);" (assignment_expression "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8)" identifier = (pointer_expression "*(undefined4 **)(DAT_005ea7c8 + 8)" * (cast_expression "(undefined4 **)(DAT_005ea7c8 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_005ea7c8 + 8)" ( (binary_expression "DAT_005ea7c8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }" if (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" ( (binary_expression "puVar1 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }" { (expression_statement "puStack_60 = puVar1;" (assignment_expression "puStack_60 = puVar1" identifier = identifier) ;) (expression_statement "FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);" (call_expression "FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3)" identifier (argument_list "((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3)" ( (binary_expression "(int)local_50 + -0x1a1d93" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , (binary_expression "local_50 + -0x590f3" identifier + number_literal) ))) ;) })) (expression_statement "uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);" (assignment_expression "uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9)" identifier = (binary_expression "(uint)*(byte *)((int)puVar1 + 0x56b9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar1 + 0x56b9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + 0x56b9)" ( (binary_expression "(int)puVar1 + 0x56b9" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "ppuVar12 = (undefined4 **)&local_5c;" (assignment_expression "ppuVar12 = (undefined4 **)&local_5c" identifier = (cast_expression "(undefined4 **)&local_5c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_5c" & identifier))) ;) (if_statement "if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }" if (parenthesized_expression "(*(byte *)((int)puVar1 + 0x56b9) != 0)" ( (binary_expression "*(byte *)((int)puVar1 + 0x56b9) != 0" (pointer_expression "*(byte *)((int)puVar1 + 0x56b9)" * (cast_expression "(byte *)((int)puVar1 + 0x56b9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + 0x56b9)" ( (binary_expression "(int)puVar1 + 0x56b9" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }" { (expression_statement "uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);" (assignment_expression "uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54)" identifier = (call_expression "(**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54)" (parenthesized_expression "(**(code **)(*(int *)local_44 + 0x44))" ( (pointer_expression "**(code **)(*(int *)local_44 + 0x44)" * (pointer_expression "*(code **)(*(int *)local_44 + 0x44)" * (cast_expression "(code **)(*(int *)local_44 + 0x44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_44 + 0x44)" ( (binary_expression "*(int *)local_44 + 0x44" (pointer_expression "*(int *)local_44" * (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "((int *)local_44,local_54)" ( (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "ppuVar12 = (undefined4 **)&local_5c;" (assignment_expression "ppuVar12 = (undefined4 **)&local_5c" identifier = (cast_expression "(undefined4 **)&local_5c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_5c" & identifier))) ;) (if_statement "if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }" if (parenthesized_expression "((uVar7 & 1) != 0)" ( (binary_expression "(uVar7 & 1) != 0" (parenthesized_expression "(uVar7 & 1)" ( (binary_expression "uVar7 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }" { (expression_statement "(**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);" (call_expression "(**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54)" (parenthesized_expression "(**(code **)(*piVar11 + 0x40))" ( (pointer_expression "**(code **)(*piVar11 + 0x40)" * (pointer_expression "*(code **)(*piVar11 + 0x40)" * (cast_expression "(code **)(*piVar11 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar11 + 0x40)" ( (binary_expression "*piVar11 + 0x40" (pointer_expression "*piVar11" * identifier) + number_literal) ))))) )) (argument_list "(local_34,piVar11,local_54)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);" (assignment_expression "iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de)" identifier = (call_expression "FUN_003b8640(local_34,(int)local_50 + -0x1645de)" identifier (argument_list "(local_34,(int)local_50 + -0x1645de)" ( identifier , (binary_expression "(int)local_50 + -0x1645de" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = local_2c;" (assignment_expression "puVar9 = local_2c" identifier = identifier) ;) (if_statement "if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }" if (parenthesized_expression "(local_34[0] != puVar9)" ( (binary_expression "local_34[0] != puVar9" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }" { (expression_statement "puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);" (assignment_expression "puVar9 = (undefined1 *)FUN_003ae080(local_34[0])" identifier = (cast_expression "(undefined1 *)FUN_003ae080(local_34[0])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ae080(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))))) ;) })) (expression_statement "ppuVar12 = &puStack_60;" (assignment_expression "ppuVar12 = &puStack_60" identifier = (pointer_expression "&puStack_60" & identifier)) ;) (expression_statement "uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);" (assignment_expression "uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0)" identifier = (call_expression "CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0)" identifier (argument_list "((int3)((uint)puVar9 >> 8),iVar8 == 0)" ( (call_expression "(int3)((uint)puVar9 >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)puVar9 >> 8)" ( (binary_expression "(uint)puVar9 >> 8" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) , (binary_expression "iVar8 == 0" identifier == number_literal) )))) ;) })) })) (expression_statement "iVar8 = ((int *)local_44)[7];" (assignment_expression "iVar8 = ((int *)local_44)[7]" identifier = (subscript_expression "((int *)local_44)[7]" (parenthesized_expression "((int *)local_44)" ( (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ])) ;) (if_statement "if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }" { (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;" (assignment_expression "*(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c" (pointer_expression "*(int *)((int)ppuVar12 + -0x10)" * (cast_expression "(int *)((int)ppuVar12 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar8 + 0x1c" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0023dd30();" (call_expression "FUN_0023dd30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "ppuVar2 = local_50;" (assignment_expression "ppuVar2 = local_50" identifier = identifier) ;) (expression_statement "local_44 = local_4c - 1;" (assignment_expression "local_44 = local_4c - 1" identifier = (binary_expression "local_4c - 1" identifier - number_literal)) ;) (if_statement "if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }" if (parenthesized_expression "(((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0)" ( (binary_expression "((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0" (binary_expression "((uint)(local_44 >> 0x20) & param_4[0xd]) != 0" (parenthesized_expression "((uint)(local_44 >> 0x20) & param_4[0xd])" ( (binary_expression "(uint)(local_44 >> 0x20) & param_4[0xd]" (call_expression "(uint)(local_44 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 >> 0x20)" ( (binary_expression "local_44 >> 0x20" identifier >> number_literal) ))) & (subscript_expression "param_4[0xd]" identifier [ number_literal ])) )) != number_literal) || (binary_expression "((uint)local_44 & param_4[0xc]) != 0" (parenthesized_expression "((uint)local_44 & param_4[0xc])" ( (binary_expression "(uint)local_44 & param_4[0xc]" (cast_expression "(uint)local_44" ( (type_descriptor "uint" type_identifier) ) identifier) & (subscript_expression "param_4[0xc]" identifier [ number_literal ])) )) != number_literal)) )) (compound_statement "{\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }" { (do_statement "do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);" do (compound_statement "{\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      }" { (expression_statement "uVar4 = local_4c >> 1;" (assignment_expression "uVar4 = local_4c >> 1" identifier = (binary_expression "local_4c >> 1" identifier >> number_literal)) ;) (expression_statement "local_4c = local_4c >> 1;" (assignment_expression "local_4c = local_4c >> 1" identifier = (binary_expression "local_4c >> 1" identifier >> number_literal)) ;) (expression_statement "lVar6 = uVar4 - 1;" (assignment_expression "lVar6 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (expression_statement "local_44 = local_4c;" (assignment_expression "local_44 = local_4c" identifier = identifier) ;) }) while (parenthesized_expression "(((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0)" ( (binary_expression "((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0" (binary_expression "((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0" (parenthesized_expression "((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd])" ( (binary_expression "(uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]" (call_expression "(uint)((ulonglong)lVar6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) & (subscript_expression "param_4[0xd]" identifier [ number_literal ])) )) != number_literal) || (binary_expression "((uint)lVar6 & param_4[0xc]) != 0" (parenthesized_expression "((uint)lVar6 & param_4[0xc])" ( (binary_expression "(uint)lVar6 & param_4[0xc]" (cast_expression "(uint)lVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & (subscript_expression "param_4[0xc]" identifier [ number_literal ])) )) != number_literal)) )) ;) })) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }" { (expression_statement "*(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;" (assignment_expression "*(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" * (cast_expression "(byte *)(param_4[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 0x2c)" ( (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "*(byte *)(param_4[2] + 0x2c) | 2" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" * (cast_expression "(byte *)(param_4[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 0x2c)" ( (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) )))) | number_literal)) ;) (if_statement "if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }" if (parenthesized_expression "((char)uVar13 == '\0')" ( (binary_expression "(char)uVar13 == '\0'" (cast_expression "(char)uVar13" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }" { (expression_statement "piVar11 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }" if (parenthesized_expression "(piVar11 == (int *)0x0)" ( (binary_expression "piVar11 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }" { (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "piVar11 = (int *)FUN_003ac4d0();" (assignment_expression "piVar11 = (int *)FUN_003ac4d0()" identifier = (cast_expression "(int *)FUN_003ac4d0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ac4d0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar11[1] = 0;" (assignment_expression "piVar11[1] = 0" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar11 = (int)(ppuVar2 + -0x384c);" (assignment_expression "*piVar11 = (int)(ppuVar2 + -0x384c)" (pointer_expression "*piVar11" * identifier) = (cast_expression "(int)(ppuVar2 + -0x384c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ppuVar2 + -0x384c)" ( (binary_expression "ppuVar2 + -0x384c" identifier + number_literal) )))) ;) (expression_statement "*(ulonglong *)(piVar11 + 9) = local_4c;" (assignment_expression "*(ulonglong *)(piVar11 + 9) = local_4c" (pointer_expression "*(ulonglong *)(piVar11 + 9)" * (cast_expression "(ulonglong *)(piVar11 + 9)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 9)" ( (binary_expression "piVar11 + 9" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[3] = 0;" (assignment_expression "piVar11[3] = 0" (subscript_expression "piVar11[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[4] = 0;" (assignment_expression "piVar11[4] = 0" (subscript_expression "piVar11[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[5] = -1;" (assignment_expression "piVar11[5] = -1" (subscript_expression "piVar11[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[6] = -1;" (assignment_expression "piVar11[6] = -1" (subscript_expression "piVar11[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" * (cast_expression "(byte *)(piVar11 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 7)" ( (binary_expression "piVar11 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" * (cast_expression "(byte *)(piVar11 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 7)" ( (binary_expression "piVar11 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar11[8] = 0;" (assignment_expression "piVar11[8] = 0" (subscript_expression "piVar11[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[0xb] = (int)ppuVar2 + -0x1645c5;" (assignment_expression "piVar11[0xb] = (int)ppuVar2 + -0x1645c5" (subscript_expression "piVar11[0xb]" identifier [ number_literal ]) = (binary_expression "(int)ppuVar2 + -0x1645c5" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(int **)(param_1 + 0x10) = piVar11;" (assignment_expression "*(int **)(param_1 + 0x10) = piVar11" (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -4) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -4)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -4)" ( (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -8) = 0x1b;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -8) = 0x1b" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -8)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)((int)ppuVar12 + -0xc) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0xc) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0xc)" * (cast_expression "(int **)((int)ppuVar12 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x18) = 8;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x18) = 8" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x18)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x18)" ( (binary_expression "(int)ppuVar12 + -0x18" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;" (assignment_expression "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb" (pointer_expression "*(int *)((int)ppuVar12 + -0x1c)" * (cast_expression "(int *)((int)ppuVar12 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x1c)" ( (binary_expression "(int)ppuVar12 + -0x1c" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)ppuVar2 + -0x1645bb" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x20)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x20)" ( (binary_expression "(int)ppuVar12 + -0x20" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x24)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x24)" ( (binary_expression "(int)ppuVar12 + -0x24" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0027afd0();" (call_expression "FUN_0027afd0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar11 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) })) }) (else_clause "else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }" else (compound_statement "{\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }" { (expression_statement "piVar11 = *(int **)(param_1 + 0x14);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x14)" identifier = (pointer_expression "*(int **)(param_1 + 0x14)" * (cast_expression "(int **)(param_1 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }" if (parenthesized_expression "(piVar11 == (int *)0x0)" ( (binary_expression "piVar11 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }" { (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "piVar11 = (int *)FUN_003ac4d0();" (assignment_expression "piVar11 = (int *)FUN_003ac4d0()" identifier = (cast_expression "(int *)FUN_003ac4d0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ac4d0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar11[1] = 0;" (assignment_expression "piVar11[1] = 0" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar11 = (int)(ppuVar2 + -0x384c);" (assignment_expression "*piVar11 = (int)(ppuVar2 + -0x384c)" (pointer_expression "*piVar11" * identifier) = (cast_expression "(int)(ppuVar2 + -0x384c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ppuVar2 + -0x384c)" ( (binary_expression "ppuVar2 + -0x384c" identifier + number_literal) )))) ;) (expression_statement "*(ulonglong *)(piVar11 + 9) = local_4c;" (assignment_expression "*(ulonglong *)(piVar11 + 9) = local_4c" (pointer_expression "*(ulonglong *)(piVar11 + 9)" * (cast_expression "(ulonglong *)(piVar11 + 9)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 9)" ( (binary_expression "piVar11 + 9" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[3] = 0;" (assignment_expression "piVar11[3] = 0" (subscript_expression "piVar11[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[4] = 0;" (assignment_expression "piVar11[4] = 0" (subscript_expression "piVar11[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[5] = -1;" (assignment_expression "piVar11[5] = -1" (subscript_expression "piVar11[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[6] = -1;" (assignment_expression "piVar11[6] = -1" (subscript_expression "piVar11[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" * (cast_expression "(byte *)(piVar11 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 7)" ( (binary_expression "piVar11 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" * (cast_expression "(byte *)(piVar11 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 7)" ( (binary_expression "piVar11 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar11[8] = 0;" (assignment_expression "piVar11[8] = 0" (subscript_expression "piVar11[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[0xb] = (int)ppuVar2 + -0x1645d1;" (assignment_expression "piVar11[0xb] = (int)ppuVar2 + -0x1645d1" (subscript_expression "piVar11[0xb]" identifier [ number_literal ]) = (binary_expression "(int)ppuVar2 + -0x1645d1" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(int **)(param_1 + 0x14) = piVar11;" (assignment_expression "*(int **)(param_1 + 0x14) = piVar11" (pointer_expression "*(int **)(param_1 + 0x14)" * (cast_expression "(int **)(param_1 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -4) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -4)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -4)" ( (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -8) = 0x13;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -8) = 0x13" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -8)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)((int)ppuVar12 + -0xc) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0xc) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0xc)" * (cast_expression "(int **)((int)ppuVar12 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x18) = 1;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x18) = 1" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x18)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x18)" ( (binary_expression "(int)ppuVar12 + -0x18" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;" (assignment_expression "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de" (pointer_expression "*(int *)((int)ppuVar12 + -0x1c)" * (cast_expression "(int *)((int)ppuVar12 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x1c)" ( (binary_expression "(int)ppuVar12 + -0x1c" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)ppuVar2 + -0x1645de" (cast_expression "(int)ppuVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x20)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x20)" ( (binary_expression "(int)ppuVar12 + -0x20" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x24)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x24)" ( (binary_expression "(int)ppuVar12 + -0x24" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0027afd0();" (call_expression "FUN_0027afd0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar11 = *(int **)(param_1 + 0x14);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x14)" identifier = (pointer_expression "*(int **)(param_1 + 0x14)" * (cast_expression "(int **)(param_1 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) })) }))) (expression_statement "ppuVar2 = *(undefined ***)(*piVar11 + 0xc);" (assignment_expression "ppuVar2 = *(undefined ***)(*piVar11 + 0xc)" identifier = (pointer_expression "*(undefined ***)(*piVar11 + 0xc)" * (cast_expression "(undefined ***)(*piVar11 + 0xc)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(*piVar11 + 0xc)" ( (binary_expression "*piVar11 + 0xc" (pointer_expression "*piVar11" * identifier) + number_literal) ))))) ;) (if_statement "if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }" if (parenthesized_expression "(ppuVar2 == local_50 + -0x15e484)" ( (binary_expression "ppuVar2 == local_50 + -0x15e484" identifier == (binary_expression "local_50 + -0x15e484" identifier + number_literal)) )) (compound_statement "{\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }" { (expression_statement "uVar16 = *(undefined8 *)(piVar11 + 9);" (assignment_expression "uVar16 = *(undefined8 *)(piVar11 + 9)" identifier = (pointer_expression "*(undefined8 *)(piVar11 + 9)" * (cast_expression "(undefined8 *)(piVar11 + 9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 9)" ( (binary_expression "piVar11 + 9" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = local_4c;" (assignment_expression "uVar4 = local_4c" identifier = identifier) ;) }) (else_clause "else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }" else (compound_statement "{\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }" { (expression_statement "*(int **)((int)ppuVar12 + -0x10) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0x10) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0x10)" * (cast_expression "(int **)((int)ppuVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar16 = (*(code *)ppuVar2)();" (assignment_expression "uVar16 = (*(code *)ppuVar2)()" identifier = (call_expression "(*(code *)ppuVar2)()" (parenthesized_expression "(*(code *)ppuVar2)" ( (pointer_expression "*(code *)ppuVar2" * (cast_expression "(code *)ppuVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "uVar4 = local_4c;" (assignment_expression "uVar4 = local_4c" identifier = identifier) ;) }))) (expression_statement "uVar13 = (uint)((ulonglong)uVar16 >> 0x20);" (assignment_expression "uVar13 = (uint)((ulonglong)uVar16 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar16 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_4c._4_4_ = (uint)(uVar4 >> 0x20);" (assignment_expression "local_4c._4_4_ = (uint)(uVar4 >> 0x20)" (field_expression "local_4c._4_4_" identifier . field_identifier) = (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_4c._0_4_ = (undefined4 *)uVar4;" (assignment_expression "local_4c._0_4_ = (undefined4 *)uVar4" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(undefined4 *)uVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar14 = (uint)uVar16 < (undefined4 *)local_4c;" (assignment_expression "bVar14 = (uint)uVar16 < (undefined4 *)local_4c" identifier = (binary_expression "(uint)uVar16 < (undefined4 *)local_4c" (cast_expression "(uint)uVar16" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(undefined4 *)local_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "bVar15 = uVar13 < local_4c._4_4_;" (assignment_expression "bVar15 = uVar13 < local_4c._4_4_" identifier = (binary_expression "uVar13 < local_4c._4_4_" identifier < (field_expression "local_4c._4_4_" identifier . field_identifier))) ;) (expression_statement "uVar13 = uVar13 - local_4c._4_4_;" (assignment_expression "uVar13 = uVar13 - local_4c._4_4_" identifier = (binary_expression "uVar13 - local_4c._4_4_" identifier - (field_expression "local_4c._4_4_" identifier . field_identifier))) ;) (expression_statement "uVar7 = (uint)(undefined4 *)local_4c;" (assignment_expression "uVar7 = (uint)(undefined4 *)local_4c" identifier = (cast_expression "(uint)(undefined4 *)local_4c" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(undefined4 *)local_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_4c = uVar4;" (assignment_expression "local_4c = uVar4" identifier = identifier) ;) (expression_statement "uVar5 = local_44;" (assignment_expression "uVar5 = local_44" identifier = identifier) ;) (if_statement "if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }" if (parenthesized_expression "(bVar15 || uVar13 < bVar14)" ( (binary_expression "bVar15 || uVar13 < bVar14" identifier || (binary_expression "uVar13 < bVar14" identifier < identifier)) )) (compound_statement "{\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }" { (expression_statement "*(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;" (assignment_expression "*(ulonglong *)((int)ppuVar12 + -0xc) = uVar4" (pointer_expression "*(ulonglong *)((int)ppuVar12 + -0xc)" * (cast_expression "(ulonglong *)((int)ppuVar12 + -0xc)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)ppuVar12 + -0x10) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0x10) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0x10)" * (cast_expression "(int **)((int)ppuVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002c5f50();" (call_expression "FUN_002c5f50()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar7 = extraout_ECX;" (assignment_expression "uVar7 = extraout_ECX" identifier = identifier) ;) (expression_statement "uVar5 = local_44;" (assignment_expression "uVar5 = local_44" identifier = identifier) ;) })) (expression_statement "local_44._0_4_ = (int *)piVar11[3];" (assignment_expression "local_44._0_4_ = (int *)piVar11[3]" (field_expression "local_44._0_4_" identifier . field_identifier) = (cast_expression "(int *)piVar11[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[3]" identifier [ number_literal ]))) ;) (if_statement "if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }" if (parenthesized_expression "(piVar11[4] == 0)" ( (binary_expression "piVar11[4] == 0" (subscript_expression "piVar11[4]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }" { (expression_statement "local_44._4_4_ = 0;" (assignment_expression "local_44._4_4_ = 0" (field_expression "local_44._4_4_" identifier . field_identifier) = number_literal) ;) (if_statement "if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (compound_statement "{\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }" { (expression_statement "local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);" (assignment_expression "local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44)" (field_expression "local_44._0_4_" identifier . field_identifier) = (cast_expression "(int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44)" ( (binary_expression "-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44" (unary_expression "-(int)(undefined4 *)local_4c" - (cast_expression "(int)(undefined4 *)local_4c" ( (type_descriptor "int" primitive_type) ) (cast_expression "(undefined4 *)local_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) & (binary_expression "(int)(undefined4 *)local_4c + -1 + (int)(int *)local_44" (binary_expression "(int)(undefined4 *)local_4c + -1" (cast_expression "(int)(undefined4 *)local_4c" ( (type_descriptor "int" primitive_type) ) (cast_expression "(undefined4 *)local_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) + (cast_expression "(int)(int *)local_44" ( (type_descriptor "int" primitive_type) ) (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) )))) ;) })) (expression_statement "iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);" (assignment_expression "iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44)" identifier = (binary_expression "local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44)" identifier + (cast_expression "(uint)CARRY4(local_5c,(uint)(int *)local_44)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_5c,(uint)(int *)local_44)" identifier (argument_list "(local_5c,(uint)(int *)local_44)" ( identifier , (cast_expression "(uint)(int *)local_44" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) )))))) ;) (if_statement "if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }" if (parenthesized_expression "((*(byte *)(piVar11 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(piVar11 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(piVar11 + 7) & 2)" ( (binary_expression "*(byte *)(piVar11 + 7) & 2" (pointer_expression "*(byte *)(piVar11 + 7)" * (cast_expression "(byte *)(piVar11 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 7)" ( (binary_expression "piVar11 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }" { (expression_statement "piVar11[3] = local_5c + (int)(int *)local_44;" (assignment_expression "piVar11[3] = local_5c + (int)(int *)local_44" (subscript_expression "piVar11[3]" identifier [ number_literal ]) = (binary_expression "local_5c + (int)(int *)local_44" identifier + (cast_expression "(int)(int *)local_44" ( (type_descriptor "int" primitive_type) ) (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "piVar11[4] = iVar8;" (assignment_expression "piVar11[4] = iVar8" (subscript_expression "piVar11[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -8) = param_6;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -8) = param_6" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -8)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)((int)ppuVar12 + -0x10) = (int *)local_44;" (assignment_expression "*(int **)((int)ppuVar12 + -0x10) = (int *)local_44" (pointer_expression "*(int **)((int)ppuVar12 + -0x10)" * (cast_expression "(int **)((int)ppuVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(int **)((int)ppuVar12 + -0x14) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0x14) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0x14)" * (cast_expression "(int **)((int)ppuVar12 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)ppuVar12 + -0x18) = param_4;" (assignment_expression "*(undefined4 **)((int)ppuVar12 + -0x18) = param_4" (pointer_expression "*(undefined4 **)((int)ppuVar12 + -0x18)" * (cast_expression "(undefined4 **)((int)ppuVar12 + -0x18)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x18)" ( (binary_expression "(int)ppuVar12 + -0x18" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x1c) = param_2" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x1c)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x1c)" ( (binary_expression "(int)ppuVar12 + -0x1c" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)ppuVar12 + -0x20) = param_1;" (assignment_expression "*(int *)((int)ppuVar12 + -0x20) = param_1" (pointer_expression "*(int *)((int)ppuVar12 + -0x20)" * (cast_expression "(int *)((int)ppuVar12 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x20)" ( (binary_expression "(int)ppuVar12 + -0x20" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x24)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x24)" ( (binary_expression "(int)ppuVar12 + -0x24" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0022bc40();" (call_expression "FUN_0022bc40()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "*(int *)((int)ppuVar12 + -4) = iVar8;" (assignment_expression "*(int *)((int)ppuVar12 + -4) = iVar8" (pointer_expression "*(int *)((int)ppuVar12 + -4)" * (cast_expression "(int *)((int)ppuVar12 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -4)" ( (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0" (pointer_expression "*(undefined ***)((int)ppuVar12 + -8)" * (cast_expression "(undefined ***)((int)ppuVar12 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x590e0" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0x231" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;" (assignment_expression "*(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3" (pointer_expression "*(int *)((int)ppuVar12 + -0x10)" * (cast_expression "(int *)((int)ppuVar12 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)local_50 + -0x19cca3" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(uint *)((int)ppuVar12 + -4) = uVar7;" (assignment_expression "*(uint *)((int)ppuVar12 + -4) = uVar7" (pointer_expression "*(uint *)((int)ppuVar12 + -4)" * (cast_expression "(uint *)((int)ppuVar12 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -4)" ( (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e" (pointer_expression "*(undefined ***)((int)ppuVar12 + -8)" * (cast_expression "(undefined ***)((int)ppuVar12 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x5911e" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3" (pointer_expression "*(undefined ***)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined ***)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x672d3" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_44 = uVar5;" (assignment_expression "local_44 = uVar5" identifier = identifier) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(uint *)((int)ppuVar12 + -4) = uVar13;" (assignment_expression "*(uint *)((int)ppuVar12 + -4) = uVar13" (pointer_expression "*(uint *)((int)ppuVar12 + -4)" * (cast_expression "(uint *)((int)ppuVar12 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -4)" ( (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6" (pointer_expression "*(undefined ***)((int)ppuVar12 + -8)" * (cast_expression "(undefined ***)((int)ppuVar12 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppuVar12 + -8)" ( (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x590e6" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar12 + -0xc)" ( (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308" (pointer_expression "*(undefined ***)((int)ppuVar12 + -0x10)" * (cast_expression "(undefined ***)((int)ppuVar12 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppuVar12 + -0x10)" ( (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_50 + -0x67308" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;" (assignment_expression "*(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d" (pointer_expression "*(undefined1 **)((int)ppuVar12 + -0x14)" * (cast_expression "(undefined1 **)((int)ppuVar12 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar12 + -0x14)" ( (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&LAB_0022c34d" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puStack_60 = param_4;" (assignment_expression "puStack_60 = param_4" identifier = identifier) ;) (expression_statement "FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);" (call_expression "FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146)" identifier (argument_list "(local_50 + -0x5917e,0x8e,local_50 + -0x59146)" ( (binary_expression "local_50 + -0x5917e" identifier + number_literal) , number_literal , (binary_expression "local_50 + -0x59146" identifier + number_literal) ))) ;) })))
(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) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) }))) (expression_statement (assignment_expression IDENT = (subscript_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )) [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )) [ LIT ]) + LIT) , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) , (binary_expression IDENT == LIT) )))) ;) })) })) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & (subscript_expression IDENT [ LIT ])) )) != LIT) || (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & (subscript_expression IDENT [ LIT ])) )) != LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) & (subscript_expression IDENT [ LIT ])) )) != LIT) || (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & (subscript_expression IDENT [ LIT ])) )) != 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (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) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (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) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < (field_expression IDENT . field_identifier))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (field_expression IDENT . field_identifier))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT || (binary_expression IDENT < IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (unary_expression - (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) & (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) + (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)))) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)))) ;) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })))
(function_definition "void FUN_0022be00(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,int param_5,\n                 undefined4 param_6)\n\n{\n  undefined4 *puVar1;\n  undefined **ppuVar2;\n  undefined4 uVar3;\n  ulonglong uVar4;\n  ulonglong uVar5;\n  longlong lVar6;\n  uint uVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint extraout_ECX;\n  undefined4 **ppuVar12;\n  uint uVar13;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  undefined4 *puStack_60;\n  uint local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined **local_50;\n  undefined8 local_4c;\n  undefined8 local_44;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_50 = &__DT_PLTGOT;\n  puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n  if (puVar1 == (undefined4 *)0x0) {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)((int)puVar1 + 0x52d9) == '\0') {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }\n  if ((*(byte *)(param_4 + 0xb) & 8) == 0) {\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }\n  else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }\n  local_54 = param_4[3];\n  if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    \n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    \n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }\n  puStack_60 = param_4;\n                    \n  FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);\n}" (primitive_type "void") (function_declarator "FUN_0022be00(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,int param_5,\n                 undefined4 param_6)" (identifier "FUN_0022be00") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,int param_5,\n                 undefined4 param_6)" (( "(") (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 "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined **ppuVar2;\n  undefined4 uVar3;\n  ulonglong uVar4;\n  ulonglong uVar5;\n  longlong lVar6;\n  uint uVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint extraout_ECX;\n  undefined4 **ppuVar12;\n  uint uVar13;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  undefined4 *puStack_60;\n  uint local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined **local_50;\n  undefined8 local_4c;\n  undefined8 local_44;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_50 = &__DT_PLTGOT;\n  puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n  if (puVar1 == (undefined4 *)0x0) {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)((int)puVar1 + 0x52d9) == '\0') {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }\n  if ((*(byte *)(param_4 + 0xb) & 8) == 0) {\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }\n  else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }\n  local_54 = param_4[3];\n  if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    \n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    \n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }\n  puStack_60 = param_4;\n                    \n  FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined **ppuVar2;" (type_identifier "undefined") (pointer_declarator "**ppuVar2" (* "*") (pointer_declarator "*ppuVar2" (* "*") (identifier "ppuVar2"))) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "ulonglong uVar4;" (type_identifier "ulonglong") (identifier "uVar4") (; ";")) (declaration "ulonglong uVar5;" (type_identifier "ulonglong") (identifier "uVar5") (; ";")) (declaration "longlong lVar6;" (type_identifier "longlong") (identifier "lVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined1 *puVar9;" (type_identifier "undefined1") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "uint extraout_ECX;" (type_identifier "uint") (identifier "extraout_ECX") (; ";")) (declaration "undefined4 **ppuVar12;" (type_identifier "undefined4") (pointer_declarator "**ppuVar12" (* "*") (pointer_declarator "*ppuVar12" (* "*") (identifier "ppuVar12"))) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "undefined8 uVar16;" (type_identifier "undefined8") (identifier "uVar16") (; ";")) (declaration "undefined4 *puStack_60;" (type_identifier "undefined4") (pointer_declarator "*puStack_60" (* "*") (identifier "puStack_60")) (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "undefined4 local_54;" (type_identifier "undefined4") (identifier "local_54") (; ";")) (declaration "undefined **local_50;" (type_identifier "undefined") (pointer_declarator "**local_50" (* "*") (pointer_declarator "*local_50" (* "*") (identifier "local_50"))) (; ";")) (declaration "undefined8 local_4c;" (type_identifier "undefined8") (identifier "local_4c") (; ";")) (declaration "undefined8 local_44;" (type_identifier "undefined8") (identifier "local_44") (; ";")) (declaration "undefined1 *local_34 [2];" (type_identifier "undefined1") (pointer_declarator "*local_34 [2]" (* "*") (array_declarator "local_34 [2]" (identifier "local_34") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "local_50 = &__DT_PLTGOT;" (assignment_expression "local_50 = &__DT_PLTGOT" (identifier "local_50") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);" (assignment_expression "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined4 **)(DAT_005ea7c8 + 8)" (* "*") (cast_expression "(undefined4 **)(DAT_005ea7c8 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_005ea7c8 + 8)" (( "(") (binary_expression "DAT_005ea7c8 + 8" (identifier "DAT_005ea7c8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (puVar1 == (undefined4 *)0x0) {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }" (if "if") (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar1 == (undefined4 *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options");\n  }" ({ "{") (expression_statement "puStack_60 = puVar1;" (assignment_expression "puStack_60 = puVar1" (identifier "puStack_60") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "FUN_002446e0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_002446e0("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_002446e0") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)((int)puVar1 + 0x52d9) == '\0') {\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }" (if "if") (parenthesized_expression "(*(char *)((int)puVar1 + 0x52d9) == '\0')" (( "(") (binary_expression "*(char *)((int)puVar1 + 0x52d9) == '\0'" (pointer_expression "*(char *)((int)puVar1 + 0x52d9)" (* "*") (cast_expression "(char *)((int)puVar1 + 0x52d9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + 0x52d9)" (( "(") (binary_expression "(int)puVar1 + 0x52d9" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (number_literal "0x52d9")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    puStack_60 = puVar1;\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");\n  }" ({ "{") (expression_statement "puStack_60 = puVar1;" (assignment_expression "puStack_60 = puVar1" (identifier "puStack_60") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");" (call_expression "FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc")" (identifier "FUN_002446e0") (argument_list "("../../gold/copy-relocs.cc",0x76,"make_copy_reloc")" (( "(") (string_literal ""../../gold/copy-relocs.cc"" (" """) (string_content "../../gold/copy-relocs.cc") (" """)) (, ",") (number_literal "0x76") (, ",") (string_literal ""make_copy_reloc"" (" """) (string_content "make_copy_reloc") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }" (if "if") (parenthesized_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0))" (( "(") (binary_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)" (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(param_4[2] + 0x2c) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_4[2] + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(param_4[2] + 0x2c) & 1)" (( "(") (binary_expression "*(byte *)(param_4[2] + 0x2c) & 1" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" (* "*") (cast_expression "(byte *)(param_4[2] + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4[2] + 0x2c)" (( "(") (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");\n  }" ({ "{") (expression_statement "FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");" (call_expression "FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc")" (identifier "FUN_002446e0") (argument_list "("../../gold/copy-relocs.cc",0x78,"make_copy_reloc")" (( "(") (string_literal ""../../gold/copy-relocs.cc"" (" """) (string_content "../../gold/copy-relocs.cc") (" """)) (, ",") (number_literal "0x78") (, ",") (string_literal ""make_copy_reloc"" (" """) (string_content "make_copy_reloc") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_4 + 0xb) & 8) == 0) {\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }\n  else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(param_4 + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 8)" (( "(") (binary_expression "*(byte *)(param_4 + 0xb) & 8" (pointer_expression "*(byte *)(param_4 + 0xb)" (* "*") (cast_expression "(byte *)(param_4 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xb)" (( "(") (binary_expression "param_4 + 0xb" (identifier "param_4") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n  }" ({ "{") (expression_statement "local_58 = param_4[0xf];" (assignment_expression "local_58 = param_4[0xf]" (identifier "local_58") (= "=") (subscript_expression "param_4[0xf]" (identifier "param_4") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "local_5c = param_4[0xe];" (assignment_expression "local_5c = param_4[0xe]" (identifier "local_5c") (= "=") (subscript_expression "param_4[0xe]" (identifier "param_4") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }" (else "else") (compound_statement "{\n    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);\n    local_44._0_4_ = (int *)*param_4;\n    uVar3 = *(undefined4 *)(param_5 + 4);\n    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");\n    puStack_60 = (undefined4 *)local_4c;\n    FUN_0023b810(uVar10,uVar3,(int *)local_44);\n    local_58 = param_4[0xf];\n    local_5c = param_4[0xe];\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }\n  }" ({ "{") (expression_statement "local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);" (assignment_expression "local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4)" (field_expression "local_4c._0_4_" (identifier "local_4c") (. ".") (field_identifier "_0_4_")) (= "=") (pointer_expression "*(undefined4 **)(param_4[2] + 4)" (* "*") (cast_expression "(undefined4 **)(param_4[2] + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4[2] + 4)" (( "(") (binary_expression "param_4[2] + 4" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_44._0_4_ = (int *)*param_4;" (assignment_expression "local_44._0_4_ = (int *)*param_4" (field_expression "local_44._0_4_" (identifier "local_44") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(int *)*param_4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (expression_statement "uVar3 = *(undefined4 *)(param_5 + 4);" (assignment_expression "uVar3 = *(undefined4 *)(param_5 + 4)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(param_5 + 4)" (* "*") (cast_expression "(undefined4 *)(param_5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 4)" (( "(") (binary_expression "param_5 + 4" (identifier "param_5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");" (assignment_expression "uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s")" (identifier "uVar10") (= "=") (call_expression "gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s")" (identifier "gettext") (argument_list "("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s")" (( "(") (string_literal ""%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"" (" """) (string_content "%s: cannot make copy relocation for protected symbol ") (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content ", defined in %s") (" """)) () ")")))) (; ";")) (expression_statement "puStack_60 = (undefined4 *)local_4c;" (assignment_expression "puStack_60 = (undefined4 *)local_4c" (identifier "puStack_60") (= "=") (cast_expression "(undefined4 *)local_4c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c"))) (; ";")) (expression_statement "FUN_0023b810(uVar10,uVar3,(int *)local_44);" (call_expression "FUN_0023b810(uVar10,uVar3,(int *)local_44)" (identifier "FUN_0023b810") (argument_list "(uVar10,uVar3,(int *)local_44)" (( "(") (identifier "uVar10") (, ",") (identifier "uVar3") (, ",") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44")) () ")"))) (; ";")) (expression_statement "local_58 = param_4[0xf];" (assignment_expression "local_58 = param_4[0xf]" (identifier "local_58") (= "=") (subscript_expression "param_4[0xf]" (identifier "param_4") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "local_5c = param_4[0xe];" (assignment_expression "local_5c = param_4[0xe]" (identifier "local_5c") (= "=") (subscript_expression "param_4[0xe]" (identifier "param_4") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }" (if "if") (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puStack_60 = param_4;\n                    \n      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);\n    }" ({ "{") (expression_statement "puStack_60 = param_4;" (assignment_expression "puStack_60 = param_4" (identifier "puStack_60") (= "=") (identifier "param_4")) (; ";")) (expression_statement "FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);" (call_expression "FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1)" (identifier "FUN_002446e0") (argument_list "(local_50 + -0x67308,0xaa,local_50 + -0x590f1)" (( "(") (binary_expression "local_50 + -0x67308" (identifier "local_50") (+ "+") (number_literal "-0x67308")) (, ",") (number_literal "0xaa") (, ",") (binary_expression "local_50 + -0x590f1" (identifier "local_50") (+ "+") (number_literal "-0x590f1")) () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "local_54 = param_4[3];" (assignment_expression "local_54 = param_4[3]" (identifier "local_54") (= "=") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    \n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    \n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }" (if "if") (parenthesized_expression "((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x2b) & 0x20" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2b)" (( "(") (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2b")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_44._0_4_ = (int *)param_4[2];\n    if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }\n                    \n    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);\n    piVar11 = (int *)local_44;\n    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);\n    if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }\n    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);\n    ppuVar12 = (undefined4 **)&local_5c;\n    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }\n    iVar8 = ((int *)local_44)[7];\n    if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }\n    ppuVar2 = local_50;\n    local_44 = local_4c - 1;\n    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }\n    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }\n    *(uint *)((int)ppuVar12 + -4) = uVar13;\n    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;\n    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;\n    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;\n                    \n    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;\n    FUN_002446e0();\n  }" ({ "{") (expression_statement "local_44._0_4_ = (int *)param_4[2];" (assignment_expression "local_44._0_4_ = (int *)param_4[2]" (field_expression "local_44._0_4_" (identifier "local_44") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(int *)param_4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (((int *)local_44)[7] != 0) {\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }" (if "if") (parenthesized_expression "(((int *)local_44)[7] != 0)" (( "(") (binary_expression "((int *)local_44)[7] != 0" (subscript_expression "((int *)local_44)[7]" (parenthesized_expression "((int *)local_44)" (( "(") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44")) () ")")) ([ "[") (number_literal "7") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);\n    }" ({ "{") (expression_statement "FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);" (call_expression "FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff)" (identifier "FUN_0023cd00") (argument_list "(((int *)local_44)[7] + 0x1c,0xffffffff)" (( "(") (binary_expression "((int *)local_44)[7] + 0x1c" (subscript_expression "((int *)local_44)[7]" (parenthesized_expression "((int *)local_44)" (( "(") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44")) () ")")) ([ "[") (number_literal "7") (] "]")) (+ "+") (number_literal "0x1c")) (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (} "}"))) (expression_statement "local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);" (assignment_expression "local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54)" (identifier "local_4c") (= "=") (call_expression "(**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54)" (parenthesized_expression "(**(code **)(*(int *)local_44 + 0x5c))" (( "(") (pointer_expression "**(code **)(*(int *)local_44 + 0x5c)" (* "*") (pointer_expression "*(code **)(*(int *)local_44 + 0x5c)" (* "*") (cast_expression "(code **)(*(int *)local_44 + 0x5c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)local_44 + 0x5c)" (( "(") (binary_expression "*(int *)local_44 + 0x5c" (pointer_expression "*(int *)local_44" (* "*") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44"))) (+ "+") (number_literal "0x5c")) () ")"))))) () ")")) (argument_list "((int *)local_44,local_54)" (( "(") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44")) (, ",") (identifier "local_54") () ")")))) (; ";")) (expression_statement "piVar11 = (int *)local_44;" (assignment_expression "piVar11 = (int *)local_44" (identifier "piVar11") (= "=") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44"))) (; ";")) (expression_statement "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);" (assignment_expression "puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined4 **)(DAT_005ea7c8 + 8)" (* "*") (cast_expression "(undefined4 **)(DAT_005ea7c8 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_005ea7c8 + 8)" (( "(") (binary_expression "DAT_005ea7c8 + 8" (identifier "DAT_005ea7c8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (puVar1 == (undefined4 *)0x0) {\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }" (if "if") (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar1 == (undefined4 *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      puStack_60 = puVar1;\n                    \n                    \n      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);\n    }" ({ "{") (expression_statement "puStack_60 = puVar1;" (assignment_expression "puStack_60 = puVar1" (identifier "puStack_60") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);" (call_expression "FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3)" (identifier "FUN_002446e0") (argument_list "((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3)" (( "(") (binary_expression "(int)local_50 + -0x1a1d93" (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")) (+ "+") (number_literal "-0x1a1d93")) (, ",") (number_literal "0x5c") (, ",") (binary_expression "local_50 + -0x590f3" (identifier "local_50") (+ "+") (number_literal "-0x590f3")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);" (assignment_expression "uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9)" (identifier "uVar13") (= "=") (binary_expression "(uint)*(byte *)((int)puVar1 + 0x56b9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar1 + 0x56b9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + 0x56b9)" (( "(") (binary_expression "(int)puVar1 + 0x56b9" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (number_literal "0x56b9")) () ")"))))) (; ";")) (expression_statement "ppuVar12 = (undefined4 **)&local_5c;" (assignment_expression "ppuVar12 = (undefined4 **)&local_5c" (identifier "ppuVar12") (= "=") (cast_expression "(undefined4 **)&local_5c" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&local_5c" (& "&") (identifier "local_5c")))) (; ";")) (if_statement "if (*(byte *)((int)puVar1 + 0x56b9) != 0) {\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }" (if "if") (parenthesized_expression "(*(byte *)((int)puVar1 + 0x56b9) != 0)" (( "(") (binary_expression "*(byte *)((int)puVar1 + 0x56b9) != 0" (pointer_expression "*(byte *)((int)puVar1 + 0x56b9)" (* "*") (cast_expression "(byte *)((int)puVar1 + 0x56b9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + 0x56b9)" (( "(") (binary_expression "(int)puVar1 + 0x56b9" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (number_literal "0x56b9")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);\n      ppuVar12 = (undefined4 **)&local_5c;\n      if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }\n    }" ({ "{") (expression_statement "uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);" (assignment_expression "uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54)" (identifier "uVar7") (= "=") (call_expression "(**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54)" (parenthesized_expression "(**(code **)(*(int *)local_44 + 0x44))" (( "(") (pointer_expression "**(code **)(*(int *)local_44 + 0x44)" (* "*") (pointer_expression "*(code **)(*(int *)local_44 + 0x44)" (* "*") (cast_expression "(code **)(*(int *)local_44 + 0x44)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)local_44 + 0x44)" (( "(") (binary_expression "*(int *)local_44 + 0x44" (pointer_expression "*(int *)local_44" (* "*") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44"))) (+ "+") (number_literal "0x44")) () ")"))))) () ")")) (argument_list "((int *)local_44,local_54)" (( "(") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44")) (, ",") (identifier "local_54") () ")")))) (; ";")) (expression_statement "ppuVar12 = (undefined4 **)&local_5c;" (assignment_expression "ppuVar12 = (undefined4 **)&local_5c" (identifier "ppuVar12") (= "=") (cast_expression "(undefined4 **)&local_5c" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&local_5c" (& "&") (identifier "local_5c")))) (; ";")) (if_statement "if ((uVar7 & 1) != 0) {\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }" (if "if") (parenthesized_expression "((uVar7 & 1) != 0)" (( "(") (binary_expression "(uVar7 & 1) != 0" (parenthesized_expression "(uVar7 & 1)" (( "(") (binary_expression "uVar7 & 1" (identifier "uVar7") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);\n        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);\n        puVar9 = local_2c;\n        if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }\n        ppuVar12 = &puStack_60;\n        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);\n      }" ({ "{") (expression_statement "(**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);" (call_expression "(**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54)" (parenthesized_expression "(**(code **)(*piVar11 + 0x40))" (( "(") (pointer_expression "**(code **)(*piVar11 + 0x40)" (* "*") (pointer_expression "*(code **)(*piVar11 + 0x40)" (* "*") (cast_expression "(code **)(*piVar11 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar11 + 0x40)" (( "(") (binary_expression "*piVar11 + 0x40" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (argument_list "(local_34,piVar11,local_54)" (( "(") (identifier "local_34") (, ",") (identifier "piVar11") (, ",") (identifier "local_54") () ")"))) (; ";")) (expression_statement "iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);" (assignment_expression "iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de)" (identifier "iVar8") (= "=") (call_expression "FUN_003b8640(local_34,(int)local_50 + -0x1645de)" (identifier "FUN_003b8640") (argument_list "(local_34,(int)local_50 + -0x1645de)" (( "(") (identifier "local_34") (, ",") (binary_expression "(int)local_50 + -0x1645de" (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")) (+ "+") (number_literal "-0x1645de")) () ")")))) (; ";")) (expression_statement "puVar9 = local_2c;" (assignment_expression "puVar9 = local_2c" (identifier "puVar9") (= "=") (identifier "local_2c")) (; ";")) (if_statement "if (local_34[0] != puVar9) {\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }" (if "if") (parenthesized_expression "(local_34[0] != puVar9)" (( "(") (binary_expression "local_34[0] != puVar9" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "puVar9")) () ")")) (compound_statement "{\n          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);\n        }" ({ "{") (expression_statement "puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);" (assignment_expression "puVar9 = (undefined1 *)FUN_003ae080(local_34[0])" (identifier "puVar9") (= "=") (cast_expression "(undefined1 *)FUN_003ae080(local_34[0])" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_003ae080(local_34[0])" (identifier "FUN_003ae080") (argument_list "(local_34[0])" (( "(") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) () ")"))))) (; ";")) (} "}"))) (expression_statement "ppuVar12 = &puStack_60;" (assignment_expression "ppuVar12 = &puStack_60" (identifier "ppuVar12") (= "=") (pointer_expression "&puStack_60" (& "&") (identifier "puStack_60"))) (; ";")) (expression_statement "uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);" (assignment_expression "uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0)" (identifier "uVar13") (= "=") (call_expression "CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0)" (identifier "CONCAT31") (argument_list "((int3)((uint)puVar9 >> 8),iVar8 == 0)" (( "(") (call_expression "(int3)((uint)puVar9 >> 8)" (parenthesized_expression "(int3)" (( "(") (identifier "int3") () ")")) (argument_list "((uint)puVar9 >> 8)" (( "(") (binary_expression "(uint)puVar9 >> 8" (cast_expression "(uint)puVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar9")) (>> ">>") (number_literal "8")) () ")"))) (, ",") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar8 = ((int *)local_44)[7];" (assignment_expression "iVar8 = ((int *)local_44)[7]" (identifier "iVar8") (= "=") (subscript_expression "((int *)local_44)[7]" (parenthesized_expression "((int *)local_44)" (( "(") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44")) () ")")) ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if (iVar8 != 0) {\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;\n      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;\n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;\n      FUN_0023dd30();\n    }" ({ "{") (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0xc)" (( "(") (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "*(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;" (assignment_expression "*(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c" (pointer_expression "*(int *)((int)ppuVar12 + -0x10)" (* "*") (cast_expression "(int *)((int)ppuVar12 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x10)" (( "(") (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "iVar8 + 0x1c" (identifier "iVar8") (+ "+") (number_literal "0x1c"))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x14)" (( "(") (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x22bf4f")) (; ";")) (expression_statement "FUN_0023dd30();" (call_expression "FUN_0023dd30()" (identifier "FUN_0023dd30") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "ppuVar2 = local_50;" (assignment_expression "ppuVar2 = local_50" (identifier "ppuVar2") (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_44 = local_4c - 1;" (assignment_expression "local_44 = local_4c - 1" (identifier "local_44") (= "=") (binary_expression "local_4c - 1" (identifier "local_4c") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }" (if "if") (parenthesized_expression "(((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0)" (( "(") (binary_expression "((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0" (binary_expression "((uint)(local_44 >> 0x20) & param_4[0xd]) != 0" (parenthesized_expression "((uint)(local_44 >> 0x20) & param_4[0xd])" (( "(") (binary_expression "(uint)(local_44 >> 0x20) & param_4[0xd]" (call_expression "(uint)(local_44 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_44 >> 0x20)" (( "(") (binary_expression "local_44 >> 0x20" (identifier "local_44") (>> ">>") (number_literal "0x20")) () ")"))) (& "&") (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]"))) () ")")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "((uint)local_44 & param_4[0xc]) != 0" (parenthesized_expression "((uint)local_44 & param_4[0xc])" (( "(") (binary_expression "(uint)local_44 & param_4[0xc]" (cast_expression "(uint)local_44" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_44")) (& "&") (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]"))) () ")")) (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n      do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);\n    }" ({ "{") (do_statement "do {\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0);" (do "do") (compound_statement "{\n        uVar4 = local_4c >> 1;\n        local_4c = local_4c >> 1;\n        lVar6 = uVar4 - 1;\n        local_44 = local_4c;\n      }" ({ "{") (expression_statement "uVar4 = local_4c >> 1;" (assignment_expression "uVar4 = local_4c >> 1" (identifier "uVar4") (= "=") (binary_expression "local_4c >> 1" (identifier "local_4c") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "local_4c = local_4c >> 1;" (assignment_expression "local_4c = local_4c >> 1" (identifier "local_4c") (= "=") (binary_expression "local_4c >> 1" (identifier "local_4c") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "lVar6 = uVar4 - 1;" (assignment_expression "lVar6 = uVar4 - 1" (identifier "lVar6") (= "=") (binary_expression "uVar4 - 1" (identifier "uVar4") (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_44 = local_4c;" (assignment_expression "local_44 = local_4c" (identifier "local_44") (= "=") (identifier "local_4c")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0)" (( "(") (binary_expression "((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||\n               ((uint)lVar6 & param_4[0xc]) != 0" (binary_expression "((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0" (parenthesized_expression "((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd])" (( "(") (binary_expression "(uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]" (call_expression "(uint)((ulonglong)lVar6 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar6 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar6")) (>> ">>") (number_literal "0x20")) () ")"))) (& "&") (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]"))) () ")")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "((uint)lVar6 & param_4[0xc]) != 0" (parenthesized_expression "((uint)lVar6 & param_4[0xc])" (( "(") (binary_expression "(uint)lVar6 & param_4[0xc]" (cast_expression "(uint)lVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar6")) (& "&") (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]"))) () ")")) (!= "!=") (number_literal "0"))) () ")")) (; ";")) (} "}"))) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }" (if "if") (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;\n      if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }\n      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);\n      if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }\n      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);\n      local_4c._4_4_ = (uint)(uVar4 >> 0x20);\n      local_4c._0_4_ = (undefined4 *)uVar4;\n      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;\n      bVar15 = uVar13 < local_4c._4_4_;\n      uVar13 = uVar13 - local_4c._4_4_;\n      uVar7 = (uint)(undefined4 *)local_4c;\n      local_4c = uVar4;\n      uVar5 = local_44;\n      if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }\n      local_44._0_4_ = (int *)piVar11[3];\n      if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }\n      *(uint *)((int)ppuVar12 + -4) = uVar7;\n      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;\n      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;\n      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;\n                    \n      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;\n      local_44 = uVar5;\n      FUN_002446e0();\n    }" ({ "{") (expression_statement "*(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;" (assignment_expression "*(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" (* "*") (cast_expression "(byte *)(param_4[2] + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4[2] + 0x2c)" (( "(") (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (binary_expression "*(byte *)(param_4[2] + 0x2c) | 2" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" (* "*") (cast_expression "(byte *)(param_4[2] + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4[2] + 0x2c)" (( "(") (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x2c")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (if_statement "if ((char)uVar13 == '\0') {\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }\n      else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }" (if "if") (parenthesized_expression "((char)uVar13 == '\0')" (( "(") (binary_expression "(char)uVar13 == '\0'" (cast_expression "(char)uVar13" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar13")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        piVar11 = *(int **)(param_1 + 0x10);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }\n      }" ({ "{") (expression_statement "piVar11 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x10)" (identifier "piVar11") (= "=") (pointer_expression "*(int **)(param_1 + 0x10)" (* "*") (cast_expression "(int **)(param_1 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }" (if "if") (parenthesized_expression "(piVar11 == (int *)0x0)" (( "(") (binary_expression "piVar11 == (int *)0x0" (identifier "piVar11") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;\n          *(int **)(param_1 + 0x10) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x10);\n        }" ({ "{") (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x10)" (( "(") (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0x30")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x14)" (( "(") (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x22c14a")) (; ";")) (expression_statement "piVar11 = (int *)FUN_003ac4d0();" (assignment_expression "piVar11 = (int *)FUN_003ac4d0()" (identifier "piVar11") (= "=") (cast_expression "(int *)FUN_003ac4d0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_003ac4d0()" (identifier "FUN_003ac4d0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar11[1] = 0;" (assignment_expression "piVar11[1] = 0" (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar11 = (int)(ppuVar2 + -0x384c);" (assignment_expression "*piVar11 = (int)(ppuVar2 + -0x384c)" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (cast_expression "(int)(ppuVar2 + -0x384c)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(ppuVar2 + -0x384c)" (( "(") (binary_expression "ppuVar2 + -0x384c" (identifier "ppuVar2") (+ "+") (number_literal "-0x384c")) () ")")))) (; ";")) (expression_statement "*(ulonglong *)(piVar11 + 9) = local_4c;" (assignment_expression "*(ulonglong *)(piVar11 + 9) = local_4c" (pointer_expression "*(ulonglong *)(piVar11 + 9)" (* "*") (cast_expression "(ulonglong *)(piVar11 + 9)" (( "(") (type_descriptor "ulonglong *" (type_identifier "ulonglong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 9)" (( "(") (binary_expression "piVar11 + 9" (identifier "piVar11") (+ "+") (number_literal "9")) () ")")))) (= "=") (identifier "local_4c")) (; ";")) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11[3] = 0;" (assignment_expression "piVar11[3] = 0" (subscript_expression "piVar11[3]" (identifier "piVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11[4] = 0;" (assignment_expression "piVar11[4] = 0" (subscript_expression "piVar11[4]" (identifier "piVar11") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11[5] = -1;" (assignment_expression "piVar11[5] = -1" (subscript_expression "piVar11[5]" (identifier "piVar11") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "piVar11[6] = -1;" (assignment_expression "piVar11[6] = -1" (subscript_expression "piVar11[6]" (identifier "piVar11") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" (* "*") (cast_expression "(byte *)(piVar11 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 7)" (( "(") (binary_expression "piVar11 + 7" (identifier "piVar11") (+ "+") (number_literal "7")) () ")")))) (= "=") (binary_expression "*(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" (* "*") (cast_expression "(byte *)(piVar11 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 7)" (( "(") (binary_expression "piVar11 + 7" (identifier "piVar11") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "0xe0"))) (; ";")) (expression_statement "piVar11[8] = 0;" (assignment_expression "piVar11[8] = 0" (subscript_expression "piVar11[8]" (identifier "piVar11") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11[0xb] = (int)ppuVar2 + -0x1645c5;" (assignment_expression "piVar11[0xb] = (int)ppuVar2 + -0x1645c5" (subscript_expression "piVar11[0xb]" (identifier "piVar11") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "(int)ppuVar2 + -0x1645c5" (cast_expression "(int)ppuVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar2")) (+ "+") (number_literal "-0x1645c5"))) (; ";")) (expression_statement "*(int **)(param_1 + 0x10) = piVar11;" (assignment_expression "*(int **)(param_1 + 0x10) = piVar11" (pointer_expression "*(int **)(param_1 + 0x10)" (* "*") (cast_expression "(int **)(param_1 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar11")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -4) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -4)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -4)" (( "(") (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -8) = 0x1b;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -8) = 0x1b" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -8)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -8)" (( "(") (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x1b")) (; ";")) (expression_statement "*(int **)((int)ppuVar12 + -0xc) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0xc) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0xc)" (* "*") (cast_expression "(int **)((int)ppuVar12 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar12 + -0xc)" (( "(") (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "piVar11")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x10)" (( "(") (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x14)" (( "(") (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x18) = 8;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x18) = 8" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x18)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x18)" (( "(") (binary_expression "(int)ppuVar12 + -0x18" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;" (assignment_expression "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb" (pointer_expression "*(int *)((int)ppuVar12 + -0x1c)" (* "*") (cast_expression "(int *)((int)ppuVar12 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x1c)" (( "(") (binary_expression "(int)ppuVar12 + -0x1c" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (binary_expression "(int)ppuVar2 + -0x1645bb" (cast_expression "(int)ppuVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar2")) (+ "+") (number_literal "-0x1645bb"))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x20)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x20)" (( "(") (binary_expression "(int)ppuVar12 + -0x20" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x24)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x24)" (( "(") (binary_expression "(int)ppuVar12 + -0x24" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x22c1c1")) (; ";")) (expression_statement "FUN_0027afd0();" (call_expression "FUN_0027afd0()" (identifier "FUN_0027afd0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar11 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x10)" (identifier "piVar11") (= "=") (pointer_expression "*(int **)(param_1 + 0x10)" (* "*") (cast_expression "(int **)(param_1 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }" (else "else") (compound_statement "{\n        piVar11 = *(int **)(param_1 + 0x14);\n        if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }\n      }" ({ "{") (expression_statement "piVar11 = *(int **)(param_1 + 0x14);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x14)" (identifier "piVar11") (= "=") (pointer_expression "*(int **)(param_1 + 0x14)" (* "*") (cast_expression "(int **)(param_1 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (piVar11 == (int *)0x0) {\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }" (if "if") (parenthesized_expression "(piVar11 == (int *)0x0)" (( "(") (binary_expression "piVar11 == (int *)0x0" (identifier "piVar11") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;\n          piVar11 = (int *)FUN_003ac4d0();\n          piVar11[1] = 0;\n          *piVar11 = (int)(ppuVar2 + -0x384c);\n          *(ulonglong *)(piVar11 + 9) = local_4c;\n          piVar11[2] = 0;\n          piVar11[3] = 0;\n          piVar11[4] = 0;\n          piVar11[5] = -1;\n          piVar11[6] = -1;\n          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;\n          piVar11[8] = 0;\n          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;\n          *(int **)(param_1 + 0x14) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -4) = 0;\n          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;\n          *(int **)((int)ppuVar12 + -0xc) = piVar11;\n          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;\n          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;\n          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;\n          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;\n          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;\n          FUN_0027afd0();\n          piVar11 = *(int **)(param_1 + 0x14);\n        }" ({ "{") (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0x30" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x10)" (( "(") (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0x30")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x14)" (( "(") (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x22c20d")) (; ";")) (expression_statement "piVar11 = (int *)FUN_003ac4d0();" (assignment_expression "piVar11 = (int *)FUN_003ac4d0()" (identifier "piVar11") (= "=") (cast_expression "(int *)FUN_003ac4d0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_003ac4d0()" (identifier "FUN_003ac4d0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar11[1] = 0;" (assignment_expression "piVar11[1] = 0" (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar11 = (int)(ppuVar2 + -0x384c);" (assignment_expression "*piVar11 = (int)(ppuVar2 + -0x384c)" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (cast_expression "(int)(ppuVar2 + -0x384c)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(ppuVar2 + -0x384c)" (( "(") (binary_expression "ppuVar2 + -0x384c" (identifier "ppuVar2") (+ "+") (number_literal "-0x384c")) () ")")))) (; ";")) (expression_statement "*(ulonglong *)(piVar11 + 9) = local_4c;" (assignment_expression "*(ulonglong *)(piVar11 + 9) = local_4c" (pointer_expression "*(ulonglong *)(piVar11 + 9)" (* "*") (cast_expression "(ulonglong *)(piVar11 + 9)" (( "(") (type_descriptor "ulonglong *" (type_identifier "ulonglong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 9)" (( "(") (binary_expression "piVar11 + 9" (identifier "piVar11") (+ "+") (number_literal "9")) () ")")))) (= "=") (identifier "local_4c")) (; ";")) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11[3] = 0;" (assignment_expression "piVar11[3] = 0" (subscript_expression "piVar11[3]" (identifier "piVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11[4] = 0;" (assignment_expression "piVar11[4] = 0" (subscript_expression "piVar11[4]" (identifier "piVar11") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11[5] = -1;" (assignment_expression "piVar11[5] = -1" (subscript_expression "piVar11[5]" (identifier "piVar11") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "piVar11[6] = -1;" (assignment_expression "piVar11[6] = -1" (subscript_expression "piVar11[6]" (identifier "piVar11") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" (* "*") (cast_expression "(byte *)(piVar11 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 7)" (( "(") (binary_expression "piVar11 + 7" (identifier "piVar11") (+ "+") (number_literal "7")) () ")")))) (= "=") (binary_expression "*(byte *)(piVar11 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar11 + 7)" (* "*") (cast_expression "(byte *)(piVar11 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 7)" (( "(") (binary_expression "piVar11 + 7" (identifier "piVar11") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "0xe0"))) (; ";")) (expression_statement "piVar11[8] = 0;" (assignment_expression "piVar11[8] = 0" (subscript_expression "piVar11[8]" (identifier "piVar11") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11[0xb] = (int)ppuVar2 + -0x1645d1;" (assignment_expression "piVar11[0xb] = (int)ppuVar2 + -0x1645d1" (subscript_expression "piVar11[0xb]" (identifier "piVar11") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "(int)ppuVar2 + -0x1645d1" (cast_expression "(int)ppuVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar2")) (+ "+") (number_literal "-0x1645d1"))) (; ";")) (expression_statement "*(int **)(param_1 + 0x14) = piVar11;" (assignment_expression "*(int **)(param_1 + 0x14) = piVar11" (pointer_expression "*(int **)(param_1 + 0x14)" (* "*") (cast_expression "(int **)(param_1 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "piVar11")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -4) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -4)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -4)" (( "(") (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -8) = 0x13;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -8) = 0x13" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -8)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -8)" (( "(") (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x13")) (; ";")) (expression_statement "*(int **)((int)ppuVar12 + -0xc) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0xc) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0xc)" (* "*") (cast_expression "(int **)((int)ppuVar12 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar12 + -0xc)" (( "(") (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "piVar11")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x10) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x10) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x10)" (( "(") (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x14)" (( "(") (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x18) = 1;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x18) = 1" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x18)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x18)" (( "(") (binary_expression "(int)ppuVar12 + -0x18" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;" (assignment_expression "*(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de" (pointer_expression "*(int *)((int)ppuVar12 + -0x1c)" (* "*") (cast_expression "(int *)((int)ppuVar12 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x1c)" (( "(") (binary_expression "(int)ppuVar12 + -0x1c" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (binary_expression "(int)ppuVar2 + -0x1645de" (cast_expression "(int)ppuVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar2")) (+ "+") (number_literal "-0x1645de"))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x20) = param_3" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x20)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x20)" (( "(") (binary_expression "(int)ppuVar12 + -0x20" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x24)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x24)" (( "(") (binary_expression "(int)ppuVar12 + -0x24" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x22c284")) (; ";")) (expression_statement "FUN_0027afd0();" (call_expression "FUN_0027afd0()" (identifier "FUN_0027afd0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar11 = *(int **)(param_1 + 0x14);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x14)" (identifier "piVar11") (= "=") (pointer_expression "*(int **)(param_1 + 0x14)" (* "*") (cast_expression "(int **)(param_1 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (expression_statement "ppuVar2 = *(undefined ***)(*piVar11 + 0xc);" (assignment_expression "ppuVar2 = *(undefined ***)(*piVar11 + 0xc)" (identifier "ppuVar2") (= "=") (pointer_expression "*(undefined ***)(*piVar11 + 0xc)" (* "*") (cast_expression "(undefined ***)(*piVar11 + 0xc)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(*piVar11 + 0xc)" (( "(") (binary_expression "*piVar11 + 0xc" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (ppuVar2 == local_50 + -0x15e484) {\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }\n      else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }" (if "if") (parenthesized_expression "(ppuVar2 == local_50 + -0x15e484)" (( "(") (binary_expression "ppuVar2 == local_50 + -0x15e484" (identifier "ppuVar2") (== "==") (binary_expression "local_50 + -0x15e484" (identifier "local_50") (+ "+") (number_literal "-0x15e484"))) () ")")) (compound_statement "{\n        uVar16 = *(undefined8 *)(piVar11 + 9);\n        uVar4 = local_4c;\n      }" ({ "{") (expression_statement "uVar16 = *(undefined8 *)(piVar11 + 9);" (assignment_expression "uVar16 = *(undefined8 *)(piVar11 + 9)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined8 *)(piVar11 + 9)" (* "*") (cast_expression "(undefined8 *)(piVar11 + 9)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 9)" (( "(") (binary_expression "piVar11 + 9" (identifier "piVar11") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "uVar4 = local_4c;" (assignment_expression "uVar4 = local_4c" (identifier "uVar4") (= "=") (identifier "local_4c")) (; ";")) (} "}")) (else_clause "else {\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }" (else "else") (compound_statement "{\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;\n        uVar16 = (*(code *)ppuVar2)();\n        uVar4 = local_4c;\n      }" ({ "{") (expression_statement "*(int **)((int)ppuVar12 + -0x10) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0x10) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0x10)" (* "*") (cast_expression "(int **)((int)ppuVar12 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x10)" (( "(") (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar11")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x14)" (( "(") (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x22c1f6")) (; ";")) (expression_statement "uVar16 = (*(code *)ppuVar2)();" (assignment_expression "uVar16 = (*(code *)ppuVar2)()" (identifier "uVar16") (= "=") (call_expression "(*(code *)ppuVar2)()" (parenthesized_expression "(*(code *)ppuVar2)" (( "(") (pointer_expression "*(code *)ppuVar2" (* "*") (cast_expression "(code *)ppuVar2" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar2"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar4 = local_4c;" (assignment_expression "uVar4 = local_4c" (identifier "uVar4") (= "=") (identifier "local_4c")) (; ";")) (} "}")))) (expression_statement "uVar13 = (uint)((ulonglong)uVar16 >> 0x20);" (assignment_expression "uVar13 = (uint)((ulonglong)uVar16 >> 0x20)" (identifier "uVar13") (= "=") (call_expression "(uint)((ulonglong)uVar16 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_4c._4_4_ = (uint)(uVar4 >> 0x20);" (assignment_expression "local_4c._4_4_ = (uint)(uVar4 >> 0x20)" (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_")) (= "=") (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 >> 0x20)" (( "(") (binary_expression "uVar4 >> 0x20" (identifier "uVar4") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_4c._0_4_ = (undefined4 *)uVar4;" (assignment_expression "local_4c._0_4_ = (undefined4 *)uVar4" (field_expression "local_4c._0_4_" (identifier "local_4c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(undefined4 *)uVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar4"))) (; ";")) (expression_statement "bVar14 = (uint)uVar16 < (undefined4 *)local_4c;" (assignment_expression "bVar14 = (uint)uVar16 < (undefined4 *)local_4c" (identifier "bVar14") (= "=") (binary_expression "(uint)uVar16 < (undefined4 *)local_4c" (cast_expression "(uint)uVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar16")) (< "<") (cast_expression "(undefined4 *)local_4c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c")))) (; ";")) (expression_statement "bVar15 = uVar13 < local_4c._4_4_;" (assignment_expression "bVar15 = uVar13 < local_4c._4_4_" (identifier "bVar15") (= "=") (binary_expression "uVar13 < local_4c._4_4_" (identifier "uVar13") (< "<") (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_")))) (; ";")) (expression_statement "uVar13 = uVar13 - local_4c._4_4_;" (assignment_expression "uVar13 = uVar13 - local_4c._4_4_" (identifier "uVar13") (= "=") (binary_expression "uVar13 - local_4c._4_4_" (identifier "uVar13") (- "-") (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_")))) (; ";")) (expression_statement "uVar7 = (uint)(undefined4 *)local_4c;" (assignment_expression "uVar7 = (uint)(undefined4 *)local_4c" (identifier "uVar7") (= "=") (cast_expression "(uint)(undefined4 *)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(undefined4 *)local_4c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c")))) (; ";")) (expression_statement "local_4c = uVar4;" (assignment_expression "local_4c = uVar4" (identifier "local_4c") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar5 = local_44;" (assignment_expression "uVar5 = local_44" (identifier "uVar5") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (bVar15 || uVar13 < bVar14) {\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }" (if "if") (parenthesized_expression "(bVar15 || uVar13 < bVar14)" (( "(") (binary_expression "bVar15 || uVar13 < bVar14" (identifier "bVar15") (|| "||") (binary_expression "uVar13 < bVar14" (identifier "uVar13") (< "<") (identifier "bVar14"))) () ")")) (compound_statement "{\n        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;\n        *(int **)((int)ppuVar12 + -0x10) = piVar11;\n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;\n        FUN_002c5f50();\n        uVar7 = extraout_ECX;\n        uVar5 = local_44;\n      }" ({ "{") (expression_statement "*(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;" (assignment_expression "*(ulonglong *)((int)ppuVar12 + -0xc) = uVar4" (pointer_expression "*(ulonglong *)((int)ppuVar12 + -0xc)" (* "*") (cast_expression "(ulonglong *)((int)ppuVar12 + -0xc)" (( "(") (type_descriptor "ulonglong *" (type_identifier "ulonglong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0xc)" (( "(") (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(int **)((int)ppuVar12 + -0x10) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0x10) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0x10)" (* "*") (cast_expression "(int **)((int)ppuVar12 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x10)" (( "(") (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar11")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x14)" (( "(") (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x22c1de")) (; ";")) (expression_statement "FUN_002c5f50();" (call_expression "FUN_002c5f50()" (identifier "FUN_002c5f50") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar7 = extraout_ECX;" (assignment_expression "uVar7 = extraout_ECX" (identifier "uVar7") (= "=") (identifier "extraout_ECX")) (; ";")) (expression_statement "uVar5 = local_44;" (assignment_expression "uVar5 = local_44" (identifier "uVar5") (= "=") (identifier "local_44")) (; ";")) (} "}"))) (expression_statement "local_44._0_4_ = (int *)piVar11[3];" (assignment_expression "local_44._0_4_ = (int *)piVar11[3]" (field_expression "local_44._0_4_" (identifier "local_44") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(int *)piVar11[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[3]" (identifier "piVar11") ([ "[") (number_literal "3") (] "]")))) (; ";")) (if_statement "if (piVar11[4] == 0) {\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }" (if "if") (parenthesized_expression "(piVar11[4] == 0)" (( "(") (binary_expression "piVar11[4] == 0" (subscript_expression "piVar11[4]" (identifier "piVar11") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_44._4_4_ = 0;\n        if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }\n        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);\n        if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }\n        *(int *)((int)ppuVar12 + -4) = iVar8;\n        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;\n        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;\n        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;\n                    \n        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;\n        FUN_002446e0();\n      }" ({ "{") (expression_statement "local_44._4_4_ = 0;" (assignment_expression "local_44._4_4_ = 0" (field_expression "local_44._4_4_" (identifier "local_44") (. ".") (field_identifier "_4_4_")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_4c != 0) {\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }" (if "if") (parenthesized_expression "(local_4c != 0)" (( "(") (binary_expression "local_4c != 0" (identifier "local_4c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);\n        }" ({ "{") (expression_statement "local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);" (assignment_expression "local_44._0_4_ =\n               (int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44)" (field_expression "local_44._0_4_" (identifier "local_44") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(int *)(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44)" (( "(") (binary_expression "-(int)(undefined4 *)local_4c &\n                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44" (unary_expression "-(int)(undefined4 *)local_4c" (- "-") (cast_expression "(int)(undefined4 *)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(undefined4 *)local_4c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c")))) (& "&") (binary_expression "(int)(undefined4 *)local_4c + -1 + (int)(int *)local_44" (binary_expression "(int)(undefined4 *)local_4c + -1" (cast_expression "(int)(undefined4 *)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(undefined4 *)local_4c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c"))) (+ "+") (number_literal "-1")) (+ "+") (cast_expression "(int)(int *)local_44" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44"))))) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);" (assignment_expression "iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44)" (identifier "iVar8") (= "=") (binary_expression "local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44)" (identifier "local_58") (+ "+") (cast_expression "(uint)CARRY4(local_5c,(uint)(int *)local_44)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(local_5c,(uint)(int *)local_44)" (identifier "CARRY4") (argument_list "(local_5c,(uint)(int *)local_44)" (( "(") (identifier "local_5c") (, ",") (cast_expression "(uint)(int *)local_44" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44"))) () ")")))))) (; ";")) (if_statement "if ((*(byte *)(piVar11 + 7) & 2) == 0) {\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }" (if "if") (parenthesized_expression "((*(byte *)(piVar11 + 7) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(piVar11 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(piVar11 + 7) & 2)" (( "(") (binary_expression "*(byte *)(piVar11 + 7) & 2" (pointer_expression "*(byte *)(piVar11 + 7)" (* "*") (cast_expression "(byte *)(piVar11 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 7)" (( "(") (binary_expression "piVar11 + 7" (identifier "piVar11") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          piVar11[3] = local_5c + (int)(int *)local_44;\n          piVar11[4] = iVar8;\n          *(undefined4 *)((int)ppuVar12 + -8) = param_6;\n          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;\n          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;\n          *(int **)((int)ppuVar12 + -0x14) = piVar11;\n          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;\n          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;\n          *(int *)((int)ppuVar12 + -0x20) = param_1;\n          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;\n          FUN_0022bc40();\n          return;\n        }" ({ "{") (expression_statement "piVar11[3] = local_5c + (int)(int *)local_44;" (assignment_expression "piVar11[3] = local_5c + (int)(int *)local_44" (subscript_expression "piVar11[3]" (identifier "piVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "local_5c + (int)(int *)local_44" (identifier "local_5c") (+ "+") (cast_expression "(int)(int *)local_44" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44"))))) (; ";")) (expression_statement "piVar11[4] = iVar8;" (assignment_expression "piVar11[4] = iVar8" (subscript_expression "piVar11[4]" (identifier "piVar11") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -8) = param_6;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -8) = param_6" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -8)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -8)" (( "(") (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "param_6")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0xc)" (( "(") (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int **)((int)ppuVar12 + -0x10) = (int *)local_44;" (assignment_expression "*(int **)((int)ppuVar12 + -0x10) = (int *)local_44" (pointer_expression "*(int **)((int)ppuVar12 + -0x10)" (* "*") (cast_expression "(int **)((int)ppuVar12 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x10)" (( "(") (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44"))) (; ";")) (expression_statement "*(int **)((int)ppuVar12 + -0x14) = piVar11;" (assignment_expression "*(int **)((int)ppuVar12 + -0x14) = piVar11" (pointer_expression "*(int **)((int)ppuVar12 + -0x14)" (* "*") (cast_expression "(int **)((int)ppuVar12 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x14)" (( "(") (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "piVar11")) (; ";")) (expression_statement "*(undefined4 **)((int)ppuVar12 + -0x18) = param_4;" (assignment_expression "*(undefined4 **)((int)ppuVar12 + -0x18) = param_4" (pointer_expression "*(undefined4 **)((int)ppuVar12 + -0x18)" (* "*") (cast_expression "(undefined4 **)((int)ppuVar12 + -0x18)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x18)" (( "(") (binary_expression "(int)ppuVar12 + -0x18" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x1c) = param_2" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x1c)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x1c)" (( "(") (binary_expression "(int)ppuVar12 + -0x1c" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int *)((int)ppuVar12 + -0x20) = param_1;" (assignment_expression "*(int *)((int)ppuVar12 + -0x20) = param_1" (pointer_expression "*(int *)((int)ppuVar12 + -0x20)" (* "*") (cast_expression "(int *)((int)ppuVar12 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x20)" (( "(") (binary_expression "(int)ppuVar12 + -0x20" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x24)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x24)" (( "(") (binary_expression "(int)ppuVar12 + -0x24" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x22c081")) (; ";")) (expression_statement "FUN_0022bc40();" (call_expression "FUN_0022bc40()" (identifier "FUN_0022bc40") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(int *)((int)ppuVar12 + -4) = iVar8;" (assignment_expression "*(int *)((int)ppuVar12 + -4) = iVar8" (pointer_expression "*(int *)((int)ppuVar12 + -4)" (* "*") (cast_expression "(int *)((int)ppuVar12 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -4)" (( "(") (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0" (pointer_expression "*(undefined ***)((int)ppuVar12 + -8)" (* "*") (cast_expression "(undefined ***)((int)ppuVar12 + -8)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)ppuVar12 + -8)" (( "(") (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "local_50 + -0x590e0" (identifier "local_50") (+ "+") (number_literal "-0x590e0"))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0x231" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0xc)" (( "(") (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0x231")) (; ";")) (expression_statement "*(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;" (assignment_expression "*(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3" (pointer_expression "*(int *)((int)ppuVar12 + -0x10)" (* "*") (cast_expression "(int *)((int)ppuVar12 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x10)" (( "(") (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "(int)local_50 + -0x19cca3" (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")) (+ "+") (number_literal "-0x19cca3"))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x14)" (( "(") (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x22c315")) (; ";")) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" (identifier "FUN_002446e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(uint *)((int)ppuVar12 + -4) = uVar7;" (assignment_expression "*(uint *)((int)ppuVar12 + -4) = uVar7" (pointer_expression "*(uint *)((int)ppuVar12 + -4)" (* "*") (cast_expression "(uint *)((int)ppuVar12 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -4)" (( "(") (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e" (pointer_expression "*(undefined ***)((int)ppuVar12 + -8)" (* "*") (cast_expression "(undefined ***)((int)ppuVar12 + -8)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)ppuVar12 + -8)" (( "(") (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "local_50 + -0x5911e" (identifier "local_50") (+ "+") (number_literal "-0x5911e"))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0xc)" (( "(") (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0xc0")) (; ";")) (expression_statement "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3" (pointer_expression "*(undefined ***)((int)ppuVar12 + -0x10)" (* "*") (cast_expression "(undefined ***)((int)ppuVar12 + -0x10)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x10)" (( "(") (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "local_50 + -0x672d3" (identifier "local_50") (+ "+") (number_literal "-0x672d3"))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x14)" (( "(") (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x22c331")) (; ";")) (expression_statement "local_44 = uVar5;" (assignment_expression "local_44 = uVar5" (identifier "local_44") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" (identifier "FUN_002446e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(uint *)((int)ppuVar12 + -4) = uVar13;" (assignment_expression "*(uint *)((int)ppuVar12 + -4) = uVar13" (pointer_expression "*(uint *)((int)ppuVar12 + -4)" (* "*") (cast_expression "(uint *)((int)ppuVar12 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -4)" (( "(") (binary_expression "(int)ppuVar12 + -4" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6" (pointer_expression "*(undefined ***)((int)ppuVar12 + -8)" (* "*") (cast_expression "(undefined ***)((int)ppuVar12 + -8)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)ppuVar12 + -8)" (( "(") (binary_expression "(int)ppuVar12 + -8" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "local_50 + -0x590e6" (identifier "local_50") (+ "+") (number_literal "-0x590e6"))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;" (assignment_expression "*(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1" (pointer_expression "*(undefined4 *)((int)ppuVar12 + -0xc)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar12 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar12 + -0xc)" (( "(") (binary_expression "(int)ppuVar12 + -0xc" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0xa1")) (; ";")) (expression_statement "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;" (assignment_expression "*(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308" (pointer_expression "*(undefined ***)((int)ppuVar12 + -0x10)" (* "*") (cast_expression "(undefined ***)((int)ppuVar12 + -0x10)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x10)" (( "(") (binary_expression "(int)ppuVar12 + -0x10" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "local_50 + -0x67308" (identifier "local_50") (+ "+") (number_literal "-0x67308"))) (; ";")) (expression_statement "*(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;" (assignment_expression "*(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d" (pointer_expression "*(undefined1 **)((int)ppuVar12 + -0x14)" (* "*") (cast_expression "(undefined1 **)((int)ppuVar12 + -0x14)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar12 + -0x14)" (( "(") (binary_expression "(int)ppuVar12 + -0x14" (cast_expression "(int)ppuVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&LAB_0022c34d" (& "&") (identifier "LAB_0022c34d"))) (; ";")) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" (identifier "FUN_002446e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "puStack_60 = param_4;" (assignment_expression "puStack_60 = param_4" (identifier "puStack_60") (= "=") (identifier "param_4")) (; ";")) (expression_statement "FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);" (call_expression "FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146)" (identifier "FUN_002446e0") (argument_list "(local_50 + -0x5917e,0x8e,local_50 + -0x59146)" (( "(") (binary_expression "local_50 + -0x5917e" (identifier "local_50") (+ "+") (number_literal "-0x5917e")) (, ",") (number_literal "0x8e") (, ",") (binary_expression "local_50 + -0x59146" (identifier "local_50") (+ "+") (number_literal "-0x59146")) () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void make_copy_reloc(Copy_relocs<4,_64,_false> * this, Symbol_table *
   symtab, Layout * layout, Sized_symbol<64> * sym, Sized_relobj_file<64,_false> * object,
   Output_data_reloc<4,_true,_64,_false> * reloc_section) */

void __thiscall
var_3::var_36<4,_64,var_34>::make_copy_reloc
          (var_36<4,_64,var_34> *this,type_22 *symtab,type_16 *layout,var_35<64> *sym
          ,Sized_relobj_file<64,var_34> *object,var_33<4,_true,_64,var_34> *reloc_section
          )

{
  type_5 *pppOVar1;
  bool var_10;
  type_1 *pOVar3;
  type_2 *var_17;
  type_3 var_22;
  type_4 **var_25;
  type_5 pcVar7;
  type_6 *pOVar8;
  type_3 var_11;
  int var_16;
  type_7 *var_13;
  char *format;
  type_8 *var_23;
  type_9 *var_1;
  type_3 extraout_ECX;
  type_3 extraout_EDX;
  type_9 **ppGVar14;
  type_3 var_28;
  uint64_t var_27;
  type_9 *pGStack_60;
  type_3 var_32;
  int var_30;
  type_3 local_54;
  type_4 **var_8;
  type_9 *var_20;
  type_3 var_19;
  type_6 *local_44;
  type_3 var_21;
  type_7 *local_34 [2];
  type_7 local_2c [28];
  
  var_8 = &_GLOBAL_OFFSET_TABLE_;
  var_1 = parameters->options_;
  if (var_1 == (type_9 *)0x0) {
    pGStack_60 = var_1;
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/parameters.h",0x5c,"options");
  }
  if ((var_1->copyreloc_).value == false) {
    pGStack_60 = var_1;
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");
  }
  if ((((sym->super_Symbol).field_0x2a & 7) != 0) ||
     (pOVar3 = (sym->super_Symbol).u1_.output_segment,
     ((type_3)pOVar3->output_lists_[3].
            super__Vector_base<var_3::type_23*,var_4::allocator<var_3::type_23*>var_5>._M_impl.
            _M_end_of_storage & 1) == 0)) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");
  }
  if (((sym->super_Symbol).field_0x2c & 8) == 0) {
    var_30 = *(int *)((int)&sym->symsize_ + 4);
    var_32 = (type_3)sym->symsize_;
  }
  else {
    var_20 = (type_9 *)
               pOVar3->output_lists_[0].
               super__Vector_base<var_3::type_23*,var_4::allocator<var_3::type_23*>var_5>._M_impl.
               _M_finish;
    local_44 = (type_6 *)(sym->super_Symbol).name_;
    pcVar7 = (object->super_Sized_relobj<64,var_34>).super_Relobj.super_Object.name_._M_dataplus.
             _M_p;
    format = (char *)var_6(
                            "%s: cannot make copy relocation for protected symbol \'%s\', defined in %s"
                            );
    pGStack_60 = var_20;
    var_7(format,pcVar7,local_44);
    var_30 = *(int *)((int)&sym->symsize_ + 4);
    var_32 = (type_3)sym->symsize_;
    if (((sym->super_Symbol).field_0x2a & 7) != 0) {
      pGStack_60 = (type_9 *)sym;
                    /* WARNING: Subroutine does not return */
      var_2((char *)(var_8 + -0x67308),0xaa,(char *)(var_8 + -0x590f1));
    }
  }
  local_54 = (sym->super_Symbol).u2_.shndx;
  if (((sym->super_Symbol).field_0x2b & 0x20) == 0) {
    pGStack_60 = (type_9 *)sym;
                    /* WARNING: Subroutine does not return */
    var_2((char *)(var_8 + -0x5917e),0x8e,(char *)(var_8 + -0x59146));
  }
  local_44 = (sym->super_Symbol).u1_.object;
  if (local_44->input_file_ != (type_2 *)0x0) {
    File_read::var_9(&local_44->input_file_->file_,(type_10 *)0xffffffff);
  }
                    /* try { // try from 0022beb2 to 0022befd has its CatchHandler @ 0022c34d */
  var_20 = (type_9 *)(*local_44->_vptr_Object[0x17])(local_44,local_54);
  pOVar8 = local_44;
  var_1 = parameters->options_;
  if (var_1 == (type_9 *)0x0) {
    pGStack_60 = var_1;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */
    var_2((char *)((int)var_8 + -0x1a1d93),0x5c,(char *)(var_8 + -0x590f3));
  }
  var_10 = (var_1->relro_).value;
  var_28 = (type_3)var_10;
  ppGVar14 = (type_9 **)&var_32;
  var_19 = extraout_EDX;
  if ((var_10 != false) &&
     (var_11 = (*local_44->_vptr_Object[0x11])(local_44,local_54),
     ppGVar14 = (type_9 **)&var_32, (var_11 & 1) != 0)) {
    (*pOVar8->_vptr_Object[0x10])(local_34,pOVar8,local_54);
    var_16 = std::string::var_12((char *)local_34);
    var_13 = local_2c;
    if (local_34[0] != var_13) {
      var_14(local_34[0]);
    }
    ppGVar14 = &pGStack_60;
    var_28 = var_15((int3)((type_3)var_13 >> 8),var_16 == 0);
  }
  var_17 = local_44->input_file_;
  if (var_17 != (type_2 *)0x0) {
    *(type_11 *)((int)ppGVar14 + -0xc) = 0xffffffff;
    *(type_12 **)((int)ppGVar14 + -0x10) = &var_17->file_;
    *(type_11 *)((int)ppGVar14 + -0x14) = 0x22bf4f;
    File_read::var_18(*(type_12 **)((int)ppGVar14 + -0x10),*(type_10 **)((int)ppGVar14 + -0xc));
  }
  var_25 = var_8;
  var_11 = (type_3)sym->value_;
  var_22 = *(type_3 *)((int)&sym->value_ + 4);
  local_44 = (type_6 *)((int)var_20 - 1);
  var_21 = (var_19 - 1) + (type_3)(var_20 != (type_9 *)0x0);
  if ((var_21 & var_22) != 0 || ((type_3)local_44 & var_11) != 0) {
    local_44 = (type_6 *)var_20;
    var_21 = var_19;
    do {
      var_20 = (type_9 *)((type_3)local_44 >> 1 | var_21 << 0x1f);
      var_19 = var_21 >> 1;
      local_44 = (type_6 *)var_20;
      var_21 = var_19;
    } while (((var_19 - 1) + (type_3)(var_20 != (type_9 *)0x0) & var_22) != 0 ||
             ((int)var_20 - 1U & var_11) != 0);
  }
  if (((sym->super_Symbol).field_0x2a & 7) != 0) {
    *(type_3 *)((int)ppGVar14 + -4) = var_28;
    *(type_4 ***)((int)ppGVar14 + -8) = var_8 + -0x590e6;
    *(type_11 *)((int)ppGVar14 + -0xc) = 0xa1;
    *(type_4 ***)((int)ppGVar14 + -0x10) = var_8 + -0x67308;
                    /* WARNING: Subroutine does not return */
    *(type_7 **)((int)ppGVar14 + -0x14) = &LAB_0022c34d;
    var_2(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),
                        *(char **)((int)ppGVar14 + -8));
  }
  pppOVar1 = &((sym->super_Symbol).u1_.output_segment)->output_lists_[3].
              super__Vector_base<var_3::type_23*,var_4::allocator<var_3::type_23*>var_5>._M_impl.
              _M_end_of_storage;
  *(type_13 *)pppOVar1 = *(type_13 *)pppOVar1 | 2;
  if ((char)var_28 == '\0') {
    var_23 = this->dynbss_;
    if (var_23 == (type_8 *)0x0) {
      *(type_11 *)((int)ppGVar14 + -0x10) = 0x30;
      *(type_11 *)((int)ppGVar14 + -0x14) = 0x22c14a;
      var_23 = (type_8 *)var_24(*(type_3 *)((int)ppGVar14 + -0x10));
      *(type_11 *)
       &(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        address_ = 0;
      (var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data = (type_14 **)(var_25 + -0x384c);
      *(type_9 **)
       &(var_23->super_Output_section_data_build).super_Output_section_data.addralign_ = var_20;
      *(type_3 *)((int)&(var_23->super_Output_section_data_build).super_Output_section_data.
                      addralign_ + 4) = var_19;
      *(type_11 *)
       ((int)&(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .address_ + 4) = 0;
      *(type_11 *)
       &(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        data_size_ = 0;
      *(type_11 *)
       ((int)&(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .data_size_ + 4) = 0;
      *(type_11 *)
       &(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        offset_ = 0xffffffff;
      *(type_11 *)
       ((int)&(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .offset_ + 4) = 0xffffffff;
      var_13 = &(var_23->super_Output_section_data_build).super_Output_section_data.
                 super_Output_data.field_0x1c;
      *var_13 = *var_13 & 0xe0;
      (var_23->super_Output_section_data_build).super_Output_section_data.output_section_ =
           (type_15 *)0x0;
      var_23->map_name_ = (char *)((int)var_25 + -0x1645c5);
      this->dynbss_ = var_23;
      *(type_11 *)((int)ppGVar14 + -4) = 0;
      *(type_11 *)((int)ppGVar14 + -8) = 0x1b;
      *(type_8 **)((int)ppGVar14 + -0xc) = var_23;
      *(type_11 *)((int)ppGVar14 + -0x10) = 0;
      *(type_11 *)((int)ppGVar14 + -0x14) = 3;
      *(type_11 *)((int)ppGVar14 + -0x18) = 8;
      *(int *)((int)ppGVar14 + -0x1c) = (int)var_25 + -0x1645bb;
      *(type_16 **)((int)ppGVar14 + -0x20) = layout;
      *(type_11 *)((int)ppGVar14 + -0x24) = 0x22c1c1;
      Layout::var_26
                (*(type_16 **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),
                 *(type_17 *)((int)ppGVar14 + -0x18),*(type_18 *)((int)ppGVar14 + -0x14),
                 *(type_19 **)((int)ppGVar14 + -0xc),
                 *(type_20 *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));
      var_23 = this->dynbss_;
    }
  }
  else {
    var_23 = this->dynrelro_;
    if (var_23 == (type_8 *)0x0) {
      *(type_11 *)((int)ppGVar14 + -0x10) = 0x30;
      *(type_11 *)((int)ppGVar14 + -0x14) = 0x22c20d;
      var_23 = (type_8 *)var_24(*(type_3 *)((int)ppGVar14 + -0x10));
      *(type_11 *)
       &(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        address_ = 0;
      (var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data = (type_14 **)(var_25 + -0x384c);
      *(type_9 **)
       &(var_23->super_Output_section_data_build).super_Output_section_data.addralign_ = var_20;
      *(type_3 *)((int)&(var_23->super_Output_section_data_build).super_Output_section_data.
                      addralign_ + 4) = var_19;
      *(type_11 *)
       ((int)&(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .address_ + 4) = 0;
      *(type_11 *)
       &(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        data_size_ = 0;
      *(type_11 *)
       ((int)&(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .data_size_ + 4) = 0;
      *(type_11 *)
       &(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data.
        offset_ = 0xffffffff;
      *(type_11 *)
       ((int)&(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data
              .offset_ + 4) = 0xffffffff;
      var_13 = &(var_23->super_Output_section_data_build).super_Output_section_data.
                 super_Output_data.field_0x1c;
      *var_13 = *var_13 & 0xe0;
      (var_23->super_Output_section_data_build).super_Output_section_data.output_section_ =
           (type_15 *)0x0;
      var_23->map_name_ = (char *)((int)var_25 + -0x1645d1);
      this->dynrelro_ = var_23;
      *(type_11 *)((int)ppGVar14 + -4) = 0;
      *(type_11 *)((int)ppGVar14 + -8) = 0x13;
      *(type_8 **)((int)ppGVar14 + -0xc) = var_23;
      *(type_11 *)((int)ppGVar14 + -0x10) = 0;
      *(type_11 *)((int)ppGVar14 + -0x14) = 3;
      *(type_11 *)((int)ppGVar14 + -0x18) = 1;
      *(int *)((int)ppGVar14 + -0x1c) = (int)var_25 + -0x1645de;
      *(type_16 **)((int)ppGVar14 + -0x20) = layout;
      *(type_11 *)((int)ppGVar14 + -0x24) = 0x22c284;
      Layout::var_26
                (*(type_16 **)((int)ppGVar14 + -0x20),*(char **)((int)ppGVar14 + -0x1c),
                 *(type_17 *)((int)ppGVar14 + -0x18),*(type_18 *)((int)ppGVar14 + -0x14),
                 *(type_19 **)((int)ppGVar14 + -0xc),
                 *(type_20 *)((int)ppGVar14 + -8),*(bool *)((int)ppGVar14 + -4));
      var_23 = this->dynrelro_;
    }
  }
  var_25 = (type_4 **)
            (var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data.
            _vptr_Output_data[3];
  if (var_25 == var_8 + -0x15e484) {
    var_27 = (var_23->super_Output_section_data_build).super_Output_section_data.addralign_;
  }
  else {
    *(type_8 **)((int)ppGVar14 + -0x10) = var_23;
    *(type_11 *)((int)ppGVar14 + -0x14) = 0x22c1f6;
    var_27 = (*(type_21 *)var_25)();
  }
  var_28 = (type_3)(var_27 >> 0x20);
  var_1 = var_20;
  if (var_28 < var_19 || var_28 - var_19 < (type_3)((type_3)var_27 < var_20)) {
    *(type_3 *)((int)ppGVar14 + -8) = var_19;
    *(type_9 **)((int)ppGVar14 + -0xc) = var_20;
    *(type_8 **)((int)ppGVar14 + -0x10) = var_23;
    *(type_11 *)((int)ppGVar14 + -0x14) = 0x22c1de;
    Output_section_data::var_29
              (*(type_19 **)((int)ppGVar14 + -0x10),*(uint64_t *)((int)ppGVar14 + -0xc))
    ;
    var_1 = (type_9 *)extraout_ECX;
  }
  var_28 = (type_3)(var_23->super_Output_section_data_build).super_Output_section_data.
                 super_Output_data.data_size_;
  if (*(int *)((int)&(var_23->super_Output_section_data_build).super_Output_section_data.
                     super_Output_data.data_size_ + 4) != 0) {
    *(type_9 **)((int)ppGVar14 + -4) = var_1;
    *(type_4 ***)((int)ppGVar14 + -8) = var_8 + -0x5911e;
    *(type_11 *)((int)ppGVar14 + -0xc) = 0xc0;
    *(type_4 ***)((int)ppGVar14 + -0x10) = var_8 + -0x672d3;
                    /* WARNING: Subroutine does not return */
    *(type_11 *)((int)ppGVar14 + -0x14) = 0x22c331;
    var_2(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),
                        *(char **)((int)ppGVar14 + -8));
  }
  var_21 = 0;
  local_44 = (type_6 *)var_28;
  if (var_19 != 0 || var_20 != (type_9 *)0x0) {
    local_44 = (type_6 *)(-(int)var_20 & ((int)var_20 - 1U) + var_28);
  }
  var_16 = var_30 + (type_3)var_31(var_32,(type_3)local_44);
  if (((var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data.
       field_0x1c & 2) != 0) {
    *(int *)((int)ppGVar14 + -4) = var_16;
    *(type_4 ***)((int)ppGVar14 + -8) = var_8 + -0x590e0;
    *(type_11 *)((int)ppGVar14 + -0xc) = 0x231;
    *(int *)((int)ppGVar14 + -0x10) = (int)var_8 + -0x19cca3;
                    /* WARNING: Subroutine does not return */
    *(type_11 *)((int)ppGVar14 + -0x14) = 0x22c315;
    var_2(*(char **)((int)ppGVar14 + -0x10),*(int *)((int)ppGVar14 + -0xc),
                        *(char **)((int)ppGVar14 + -8));
  }
  *(type_3 *)&(var_23->super_Output_section_data_build).super_Output_section_data.super_Output_data.
            data_size_ = var_32 + (int)local_44;
  *(int *)((int)&(var_23->super_Output_section_data_build).super_Output_section_data.
                 super_Output_data.data_size_ + 4) = var_16;
  *(var_33<4,_true,_64,var_34> **)((int)ppGVar14 + -8) = reloc_section;
  *(type_11 *)((int)ppGVar14 + -0xc) = 0;
  *(type_6 **)((int)ppGVar14 + -0x10) = local_44;
  *(type_8 **)((int)ppGVar14 + -0x14) = var_23;
  *(var_35<64> **)((int)ppGVar14 + -0x18) = sym;
  *(type_22 **)((int)ppGVar14 + -0x1c) = symtab;
  *(var_36<4,_64,var_34> **)((int)ppGVar14 + -0x20) = this;
  *(type_11 *)((int)ppGVar14 + -0x24) = 0x22c081;
  var_37(*(var_36<4,_64,var_34> **)((int)ppGVar14 + -0x20),
                  *(type_22 **)((int)ppGVar14 + -0x1c),
                  *(var_35<64> **)((int)ppGVar14 + -0x18),
                  *(type_23 **)((int)ppGVar14 + -0x14),*(type_24 *)((int)ppGVar14 + -0x10),
                  *(var_33<4,_true,_64,var_34> **)((int)ppGVar14 + -8));
  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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (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)))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (subscript_expression argument: (parenthesized_expression (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) index: (number_literal)) right: (number_literal)) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (parenthesized_expression (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) index: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

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

{
  undefined4 *puVar1;
  undefined **ppuVar2;
  undefined4 uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  longlong lVar6;
  uint uVar7;
  int iVar8;
  undefined1 *puVar9;
  undefined4 uVar10;
  int *piVar11;
  uint extraout_ECX;
  undefined4 **ppuVar12;
  uint uVar13;
  bool bVar14;
  bool bVar15;
  undefined8 uVar16;
  undefined4 *puStack_60;
  uint local_5c;
  int local_58;
  undefined4 local_54;
  undefined **local_50;
  undefined8 local_4c;
  undefined8 local_44;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  local_50 = &__DT_PLTGOT;
  puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);
  if (puVar1 == (undefined4 *)0x0) {
    puStack_60 = puVar1;
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/parameters.h",0x5c,"options");
  }
  if (*(char *)((int)puVar1 + 0x52d9) == '\0') {
    puStack_60 = puVar1;
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/copy-relocs.cc",0x76,"make_copy_reloc");
  }
  if (((*(byte *)((int)param_4 + 0x2a) & 7) != 0) || ((*(byte *)(param_4[2] + 0x2c) & 1) == 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/copy-relocs.cc",0x78,"make_copy_reloc");
  }
  if ((*(byte *)(param_4 + 0xb) & 8) == 0) {
    local_58 = param_4[0xf];
    local_5c = param_4[0xe];
  }
  else {
    local_4c._0_4_ = *(undefined4 **)(param_4[2] + 4);
    local_44._0_4_ = (int *)*param_4;
    uVar3 = *(undefined4 *)(param_5 + 4);
    uVar10 = gettext("%s: cannot make copy relocation for protected symbol \'%s\', defined in %s");
    puStack_60 = (undefined4 *)local_4c;
    FUN_0023b810(uVar10,uVar3,(int *)local_44);
    local_58 = param_4[0xf];
    local_5c = param_4[0xe];
    if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {
      puStack_60 = param_4;
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(local_50 + -0x67308,0xaa,local_50 + -0x590f1);
    }
  }
  local_54 = param_4[3];
  if ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0) {
    local_44._0_4_ = (int *)param_4[2];
    if (((int *)local_44)[7] != 0) {
      FUN_0023cd00(((int *)local_44)[7] + 0x1c,0xffffffff);
    }
                    /* try { // try from 0022beb2 to 0022befd has its CatchHandler @ 0022c34d */
    local_4c = (**(code **)(*(int *)local_44 + 0x5c))((int *)local_44,local_54);
    piVar11 = (int *)local_44;
    puVar1 = *(undefined4 **)(DAT_005ea7c8 + 8);
    if (puVar1 == (undefined4 *)0x0) {
      puStack_60 = puVar1;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0022c2f4 to 0022c2f8 has its CatchHandler @ 0022c34d */
      FUN_002446e0((int)local_50 + -0x1a1d93,0x5c,local_50 + -0x590f3);
    }
    uVar13 = (uint)*(byte *)((int)puVar1 + 0x56b9);
    ppuVar12 = (undefined4 **)&local_5c;
    if (*(byte *)((int)puVar1 + 0x56b9) != 0) {
      uVar7 = (**(code **)(*(int *)local_44 + 0x44))((int *)local_44,local_54);
      ppuVar12 = (undefined4 **)&local_5c;
      if ((uVar7 & 1) != 0) {
        (**(code **)(*piVar11 + 0x40))(local_34,piVar11,local_54);
        iVar8 = FUN_003b8640(local_34,(int)local_50 + -0x1645de);
        puVar9 = local_2c;
        if (local_34[0] != puVar9) {
          puVar9 = (undefined1 *)FUN_003ae080(local_34[0]);
        }
        ppuVar12 = &puStack_60;
        uVar13 = CONCAT31((int3)((uint)puVar9 >> 8),iVar8 == 0);
      }
    }
    iVar8 = ((int *)local_44)[7];
    if (iVar8 != 0) {
      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xffffffff;
      *(int *)((int)ppuVar12 + -0x10) = iVar8 + 0x1c;
      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22bf4f;
      FUN_0023dd30();
    }
    ppuVar2 = local_50;
    local_44 = local_4c - 1;
    if (((uint)(local_44 >> 0x20) & param_4[0xd]) != 0 || ((uint)local_44 & param_4[0xc]) != 0) {
      do {
        uVar4 = local_4c >> 1;
        local_4c = local_4c >> 1;
        lVar6 = uVar4 - 1;
        local_44 = local_4c;
      } while (((uint)((ulonglong)lVar6 >> 0x20) & param_4[0xd]) != 0 ||
               ((uint)lVar6 & param_4[0xc]) != 0);
    }
    if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {
      *(byte *)(param_4[2] + 0x2c) = *(byte *)(param_4[2] + 0x2c) | 2;
      if ((char)uVar13 == '\0') {
        piVar11 = *(int **)(param_1 + 0x10);
        if (piVar11 == (int *)0x0) {
          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;
          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c14a;
          piVar11 = (int *)FUN_003ac4d0();
          piVar11[1] = 0;
          *piVar11 = (int)(ppuVar2 + -0x384c);
          *(ulonglong *)(piVar11 + 9) = local_4c;
          piVar11[2] = 0;
          piVar11[3] = 0;
          piVar11[4] = 0;
          piVar11[5] = -1;
          piVar11[6] = -1;
          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;
          piVar11[8] = 0;
          piVar11[0xb] = (int)ppuVar2 + -0x1645c5;
          *(int **)(param_1 + 0x10) = piVar11;
          *(undefined4 *)((int)ppuVar12 + -4) = 0;
          *(undefined4 *)((int)ppuVar12 + -8) = 0x1b;
          *(int **)((int)ppuVar12 + -0xc) = piVar11;
          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;
          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;
          *(undefined4 *)((int)ppuVar12 + -0x18) = 8;
          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645bb;
          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;
          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c1c1;
          FUN_0027afd0();
          piVar11 = *(int **)(param_1 + 0x10);
        }
      }
      else {
        piVar11 = *(int **)(param_1 + 0x14);
        if (piVar11 == (int *)0x0) {
          *(undefined4 *)((int)ppuVar12 + -0x10) = 0x30;
          *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c20d;
          piVar11 = (int *)FUN_003ac4d0();
          piVar11[1] = 0;
          *piVar11 = (int)(ppuVar2 + -0x384c);
          *(ulonglong *)(piVar11 + 9) = local_4c;
          piVar11[2] = 0;
          piVar11[3] = 0;
          piVar11[4] = 0;
          piVar11[5] = -1;
          piVar11[6] = -1;
          *(byte *)(piVar11 + 7) = *(byte *)(piVar11 + 7) & 0xe0;
          piVar11[8] = 0;
          piVar11[0xb] = (int)ppuVar2 + -0x1645d1;
          *(int **)(param_1 + 0x14) = piVar11;
          *(undefined4 *)((int)ppuVar12 + -4) = 0;
          *(undefined4 *)((int)ppuVar12 + -8) = 0x13;
          *(int **)((int)ppuVar12 + -0xc) = piVar11;
          *(undefined4 *)((int)ppuVar12 + -0x10) = 0;
          *(undefined4 *)((int)ppuVar12 + -0x14) = 3;
          *(undefined4 *)((int)ppuVar12 + -0x18) = 1;
          *(int *)((int)ppuVar12 + -0x1c) = (int)ppuVar2 + -0x1645de;
          *(undefined4 *)((int)ppuVar12 + -0x20) = param_3;
          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c284;
          FUN_0027afd0();
          piVar11 = *(int **)(param_1 + 0x14);
        }
      }
      ppuVar2 = *(undefined ***)(*piVar11 + 0xc);
      if (ppuVar2 == local_50 + -0x15e484) {
        uVar16 = *(undefined8 *)(piVar11 + 9);
        uVar4 = local_4c;
      }
      else {
        *(int **)((int)ppuVar12 + -0x10) = piVar11;
        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1f6;
        uVar16 = (*(code *)ppuVar2)();
        uVar4 = local_4c;
      }
      uVar13 = (uint)((ulonglong)uVar16 >> 0x20);
      local_4c._4_4_ = (uint)(uVar4 >> 0x20);
      local_4c._0_4_ = (undefined4 *)uVar4;
      bVar14 = (uint)uVar16 < (undefined4 *)local_4c;
      bVar15 = uVar13 < local_4c._4_4_;
      uVar13 = uVar13 - local_4c._4_4_;
      uVar7 = (uint)(undefined4 *)local_4c;
      local_4c = uVar4;
      uVar5 = local_44;
      if (bVar15 || uVar13 < bVar14) {
        *(ulonglong *)((int)ppuVar12 + -0xc) = uVar4;
        *(int **)((int)ppuVar12 + -0x10) = piVar11;
        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c1de;
        FUN_002c5f50();
        uVar7 = extraout_ECX;
        uVar5 = local_44;
      }
      local_44._0_4_ = (int *)piVar11[3];
      if (piVar11[4] == 0) {
        local_44._4_4_ = 0;
        if (local_4c != 0) {
          local_44._0_4_ =
               (int *)(-(int)(undefined4 *)local_4c &
                      (int)(undefined4 *)local_4c + -1 + (int)(int *)local_44);
        }
        iVar8 = local_58 + (uint)CARRY4(local_5c,(uint)(int *)local_44);
        if ((*(byte *)(piVar11 + 7) & 2) == 0) {
          piVar11[3] = local_5c + (int)(int *)local_44;
          piVar11[4] = iVar8;
          *(undefined4 *)((int)ppuVar12 + -8) = param_6;
          *(undefined4 *)((int)ppuVar12 + -0xc) = 0;
          *(int **)((int)ppuVar12 + -0x10) = (int *)local_44;
          *(int **)((int)ppuVar12 + -0x14) = piVar11;
          *(undefined4 **)((int)ppuVar12 + -0x18) = param_4;
          *(undefined4 *)((int)ppuVar12 + -0x1c) = param_2;
          *(int *)((int)ppuVar12 + -0x20) = param_1;
          *(undefined4 *)((int)ppuVar12 + -0x24) = 0x22c081;
          FUN_0022bc40();
          return;
        }
        *(int *)((int)ppuVar12 + -4) = iVar8;
        *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e0;
        *(undefined4 *)((int)ppuVar12 + -0xc) = 0x231;
        *(int *)((int)ppuVar12 + -0x10) = (int)local_50 + -0x19cca3;
                    /* WARNING: Subroutine does not return */
        *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c315;
        FUN_002446e0();
      }
      *(uint *)((int)ppuVar12 + -4) = uVar7;
      *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x5911e;
      *(undefined4 *)((int)ppuVar12 + -0xc) = 0xc0;
      *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x672d3;
                    /* WARNING: Subroutine does not return */
      *(undefined4 *)((int)ppuVar12 + -0x14) = 0x22c331;
      local_44 = uVar5;
      FUN_002446e0();
    }
    *(uint *)((int)ppuVar12 + -4) = uVar13;
    *(undefined ***)((int)ppuVar12 + -8) = local_50 + -0x590e6;
    *(undefined4 *)((int)ppuVar12 + -0xc) = 0xa1;
    *(undefined ***)((int)ppuVar12 + -0x10) = local_50 + -0x67308;
                    /* WARNING: Subroutine does not return */
    *(undefined1 **)((int)ppuVar12 + -0x14) = &LAB_0022c34d;
    FUN_002446e0();
  }
  puStack_60 = param_4;
                    /* WARNING: Subroutine does not return */
  FUN_002446e0(local_50 + -0x5917e,0x8e,local_50 + -0x59146);
}

