
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: bool do_add_input_section(Output_merge_string<char> * this, Relobj *
   object, uint shndx) */

bool __thiscall
gold::Output_merge_string<char>::do_add_input_section
          (Output_merge_string<char> *this,Relobj *object,uint shndx)

{
  uchar *puVar1;
  _func_int_varargs *p_Var2;
  pointer pcVar3;
  pointer ppMVar4;
  _func_int_varargs **pp_Var5;
  Key KVar6;
  Merged_strings_list *pMVar7;
  char *format;
  size_t sVar8;
  undefined4 uVar9;
  undefined1 uVar10;
  pointer pMVar11;
  uint uVar12;
  uint uVar13;
  undefined4 extraout_EDX;
  pointer pMVar14;
  undefined1 *puVar15;
  undefined1 *puVar16;
  uint *puVar17;
  uchar *puVar18;
  Relobj *pRVar19;
  Merged_strings_list *pMVar20;
  uint uVar21;
  pointer pMVar22;
  undefined1 auStack_80 [4];
  uint local_7c;
  uchar *local_78;
  uint local_74;
  uchar *local_70;
  pointer local_6c;
  Stringpool_template<char> *local_68;
  uint local_64;
  Merged_strings_list *local_60;
  Merged_strings *local_5c;
  uchar *local_58;
  undefined **local_54;
  uchar *local_50;
  bool is_new;
  section_size_type sec_len;
  Merged_strings_list *merged_strings_list;
  Key key;
  uint64_t addralign;
  Merged_strings_list local_34;
  
  local_54 = &_GLOBAL_OFFSET_TABLE_;
  p_Var2 = (this->super_Output_merge_base).super_Output_section_data.super_Output_data.
           _vptr_Output_data[3];
  if (p_Var2 == Output_section_data::do_addralign) {
    addralign._4_4_ =
         *(undefined4 *)
          ((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4);
    addralign._0_4_ = (int)(this->super_Output_merge_base).super_Output_section_data.addralign_;
  }
  else {
    addralign._0_4_ = (*p_Var2)(this);
    addralign._4_4_ = extraout_EDX;
  }
  local_78 = Object::decompressed_section_contents
                       (&object->super_Object,shndx,&sec_len,&is_new,&addralign);
  local_58 = local_78 + sec_len;
  puVar17 = &local_7c;
  if (local_58[-1] == '\0') {
LAB_001c8590:
    local_50 = local_58;
    puVar15 = (undefined1 *)puVar17;
  }
  else {
    (*(object->super_Object)._vptr_Object[0x10])(&local_34,object,shndx);
    pRVar19 = local_34.object;
    pcVar3 = (object->super_Object).name_._M_dataplus._M_p;
    format = (char *)gettext(local_54 + -0x3bc00);
                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */
    gold_warning(format,pcVar3,pRVar19);
    if (local_34.object != (Relobj *)&local_34.merged_strings) {
      operator_delete(local_34.object);
    }
    puVar15 = auStack_80;
    puVar17 = (uint *)auStack_80;
    if ((local_58 <= local_78) ||
       (puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0')) goto LAB_001c8590;
    do {
      local_50 = puVar18 + -1;
      if (local_78 == local_50) {
        local_50 = local_78;
        puVar15 = auStack_80;
        break;
      }
      puVar1 = puVar18 + -2;
      puVar18 = local_50;
    } while (*puVar1 != '\0');
  }
  *(undefined4 *)(puVar15 + -0x10) = 0x14;
  *(undefined4 *)(puVar15 + -0x14) = 0x1c8350;
  merged_strings_list = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));
  (merged_strings_list->merged_strings).
  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
  ._M_impl._M_start = (pointer)0x0;
  merged_strings_list->object = object;
  (merged_strings_list->merged_strings).
  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
  ._M_impl._M_finish = (pointer)0x0;
  ppMVar4 = (this->merged_strings_lists_).
            super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>
            ._M_impl._M_finish;
  merged_strings_list->shndx = shndx;
  (merged_strings_list->merged_strings).
  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
  ._M_impl._M_end_of_storage = (pointer)0x0;
  if (ppMVar4 ==
      (this->merged_strings_lists_).
      super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>
      ._M_impl._M_end_of_storage) {
    *(Merged_strings_list ***)(puVar15 + -8) = &merged_strings_list;
    *(pointer *)(puVar15 + -0xc) = ppMVar4;
    *(Merged_strings_lists **)(puVar15 + -0x10) = &this->merged_strings_lists_;
    *(undefined4 *)(puVar15 + -0x14) = 0x1c8696;
    std::
    vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>
    ::_M_realloc_insert<gold::Output_merge_string<char>::Merged_strings_list*_const&>
              (*(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>
                 **)(puVar15 + -0x10),(iterator)*(Merged_strings_list ***)(puVar15 + -0xc),
               *(Merged_strings_list ***)(puVar15 + -8));
  }
  else {
    *ppMVar4 = merged_strings_list;
    (this->merged_strings_lists_).
    super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>
    ._M_impl._M_finish = ppMVar4 + 1;
  }
  local_5c = &merged_strings_list->merged_strings;
  if (local_78 < local_50) {
    local_60 = merged_strings_list;
    uVar21 = 0;
    puVar18 = local_78;
    do {
      *(uchar **)(puVar15 + -0x10) = puVar18;
      *(undefined4 *)(puVar15 + -0x14) = 0x1c83cc;
      sVar8 = strlen(*(char **)(puVar15 + -0x10));
      pMVar20 = local_60;
      uVar12 = uVar21 + 1;
      if (sVar8 != 0) {
        uVar12 = uVar21 + 2;
        uVar21 = uVar21 + 1;
      }
      puVar18 = puVar18 + sVar8 + 1;
    } while (puVar18 < local_50);
    uVar13 = uVar12;
    local_7c = uVar21;
    if (local_50 < local_58) {
      uVar13 = uVar12 + 1;
      local_7c = uVar12;
    }
    if (0x1fffffff < uVar13) {
      *(int *)(puVar15 + -0x10) = (int)local_54 + -0x10ea7d;
                    /* WARNING: Subroutine does not return */
      *(undefined1 **)(puVar15 + -0x14) = &LAB_001c8729;
      std::__throw_length_error(*(char **)(puVar15 + -0x10));
    }
    pMVar11 = (local_60->merged_strings).
              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
              ._M_impl._M_start;
    if (uVar13 <= (uint)((int)(local_60->merged_strings).
                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;
    pMVar22 = (local_60->merged_strings).
              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
              ._M_impl._M_finish;
    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);
    local_64 = uVar13 * 8;
    if (uVar13 != 0) goto LAB_001c85d4;
    local_60 = (Merged_strings_list *)0x0;
    pMVar7 = local_60;
    pMVar14 = pMVar11;
  }
  else {
    pMVar11 = (merged_strings_list->merged_strings).
              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
              ._M_impl._M_start;
    local_7c = (uint)(local_50 < local_58);
    uVar21 = ~-(uint)(local_50 < local_58) + 2;
    if (uVar21 <= (uint)((int)(merged_strings_list->merged_strings).
                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;
    pMVar22 = (merged_strings_list->merged_strings).
              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
              ._M_impl._M_finish;
    local_64 = uVar21 * 8;
    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);
    pMVar20 = merged_strings_list;
LAB_001c85d4:
    *(uint *)(puVar15 + -0x10) = local_64;
    *(undefined4 *)(puVar15 + -0x14) = 0x1c85e5;
    local_6c = pMVar11;
    local_60 = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));
    pMVar11 = local_6c;
    pMVar7 = local_60;
    pMVar14 = (pMVar20->merged_strings).
              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
              ._M_impl._M_start;
  }
  for (; pMVar11 != pMVar22; pMVar11 = pMVar11 + 1) {
    KVar6 = pMVar11->stringpool_key;
    pMVar7->object = (Relobj *)pMVar11->offset;
    pMVar7->shndx = KVar6;
    local_6c = pMVar14;
    pMVar7 = (Merged_strings_list *)&pMVar7->merged_strings;
  }
  if (pMVar14 != (pointer)0x0) {
    *(pointer *)(puVar15 + -0x10) = pMVar14;
    *(undefined4 *)(puVar15 + -0x14) = 0x1c8628;
    operator_delete(*(void **)(puVar15 + -0x10));
  }
  (pMVar20->merged_strings).
  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
  ._M_impl._M_start = (pointer)local_60;
  (pMVar20->merged_strings).
  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
  ._M_impl._M_finish = (pointer)((int)&(local_68->string_set_)._M_h._M_buckets + (int)local_60);
  (pMVar20->merged_strings).
  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
  ._M_impl._M_end_of_storage = (pointer)((int)&local_60->object + local_64);
LAB_001c8419:
  puVar18 = local_50;
  local_74 = (int)addralign - 1U & (uint)local_78;
  puVar16 = puVar15;
  if (local_78 < local_58) {
    local_64 = local_64 & 0xffffff00;
    local_68 = &this->stringpool_;
    local_60 = &local_34;
    local_6c = (pointer)&key;
    local_50 = local_78;
    local_70 = puVar18;
    pRVar19 = (Relobj *)0x0;
    do {
      sVar8 = (int)local_58 - (int)local_50;
      if (local_50 < local_70) {
        *(uchar **)(puVar15 + -0x10) = local_50;
        *(undefined4 *)(puVar15 + -0x14) = 0x1c8471;
        sVar8 = strlen(*(char **)(puVar15 + -0x10));
      }
      if (sVar8 != 0) {
        uVar10 = (char)local_64;
        if (((int)addralign - 1U & (uint)local_50) != local_74) {
          uVar10 = 1;
        }
        local_64 = CONCAT31(local_64._1_3_,uVar10);
      }
      *(pointer *)(puVar15 + -0x10) = local_6c;
      *(undefined4 *)(puVar15 + -0x14) = 1;
      *(size_t *)(puVar15 + -0x18) = sVar8;
      *(uchar **)(puVar15 + -0x1c) = local_50;
      *(Stringpool_template<char> **)(puVar15 + -0x20) = local_68;
      *(undefined4 *)(puVar15 + -0x24) = 0x1c84ac;
      Stringpool_template<char>::add_with_length
                (*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),
                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10));
      *(Merged_strings_list **)(puVar15 + -0xc) = local_60;
      *(Merged_strings **)(puVar15 + -0x10) = local_5c;
      local_34.shndx = key;
      *(undefined4 *)(puVar15 + -0x14) = 0x1c84c3;
      local_34.object = pRVar19;
      std::
      vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
      ::emplace_back<gold::Output_merge_string<char>::Merged_string>
                (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));
      pMVar20 = local_60;
      local_50 = local_50 + sVar8 + 1;
      pRVar19 = (Relobj *)((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1);
    } while (local_50 < local_58);
    local_34.shndx = 0;
    *(Merged_strings_list **)(puVar15 + -0xc) = local_60;
    *(Merged_strings **)(puVar15 + -0x10) = local_5c;
    *(undefined4 *)(puVar15 + -0x14) = 0x1c84ef;
    local_34.object = pRVar19;
    std::
    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
    ::emplace_back<gold::Output_merge_string<char>::Merged_string>
              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));
    this->input_count_ = this->input_count_ + local_7c;
    this->input_size_ = (size_t)((int)&(pRVar19->super_Object)._vptr_Object + this->input_size_);
    if ((char)local_64 != '\0') {
      pp_Var5 = (object->super_Object)._vptr_Object;
      *(uint *)(puVar15 + -8) = shndx;
      *(Relobj **)(puVar15 + -0xc) = object;
      *(Merged_strings_list **)(puVar15 + -0x10) = pMVar20;
      p_Var2 = pp_Var5[0x10];
      *(undefined4 *)(puVar15 + -0x14) = 0x1c851c;
      (*p_Var2)();
      pRVar19 = local_34.object;
      pcVar3 = (object->super_Object).name_._M_dataplus._M_p;
      *(undefined ***)(puVar15 + -0x14) = local_54 + -0x3bbef;
      *(undefined4 *)(puVar15 + -0x18) = 0x1c8534;
      uVar9 = gettext();
      *(Relobj **)(puVar15 + -0xc) = pRVar19;
      *(pointer *)(puVar15 + -0x10) = pcVar3;
      *(undefined4 *)(puVar15 + -0x14) = uVar9;
                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */
      *(undefined4 *)(puVar15 + -0x18) = 0x1c8544;
      gold_warning(*(char **)(puVar15 + -0x14));
      puVar16 = puVar15 + -4;
      if (local_34.object != (Relobj *)&local_34.merged_strings) {
        *(Relobj **)(puVar15 + -0x14) = local_34.object;
        *(undefined4 *)(puVar15 + -0x18) = 0x1c855a;
        operator_delete(*(void **)(puVar15 + -0x14));
        puVar16 = puVar15 + -4;
      }
    }
  }
  else {
    local_34.object = (Relobj *)0x0;
    *(Merged_strings_list **)(puVar15 + -0xc) = &local_34;
    *(Merged_strings **)(puVar15 + -0x10) = local_5c;
    local_34.shndx = 0;
    *(undefined4 *)(puVar15 + -0x14) = 0x1c86bd;
    std::
    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
    ::emplace_back<gold::Output_merge_string<char>::Merged_string>
              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>
                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));
    this->input_count_ = this->input_count_ + local_7c;
  }
  if ((this->super_Output_merge_base).keeps_input_sections_ != false) {
    *(uint *)(puVar16 + -8) = shndx;
    *(Relobj **)(puVar16 + -0xc) = object;
    *(Output_merge_string<char> **)(puVar16 + -0x10) = this;
    *(undefined4 *)(puVar16 + -0x14) = 0x1c85af;
    Output_merge_base::record_input_section
              (*(Output_merge_base **)(puVar16 + -0x10),*(Relobj **)(puVar16 + -0xc),
               *(uint *)(puVar16 + -8));
  }
  if ((is_new != false) && (local_78 != (uchar *)0x0)) {
    *(uchar **)(puVar16 + -0x10) = local_78;
    *(undefined4 *)(puVar16 + -0x14) = 0x1c857f;
    operator_delete__(*(void **)(puVar16 + -0x10));
  }
  return true;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

undefined4 FUN_001c8240(int *param_1,int *param_2,undefined1 *param_3)

{
  char *pcVar1;
  int iVar2;
  code *pcVar3;
  undefined1 **ppuVar4;
  undefined4 uVar5;
  size_t sVar6;
  undefined1 uVar7;
  undefined4 *puVar8;
  uint uVar9;
  uint uVar10;
  undefined4 *puVar11;
  undefined1 *puVar12;
  undefined1 *puVar13;
  uint *puVar14;
  undefined1 *puVar15;
  undefined1 **ppuVar16;
  uint uVar17;
  undefined4 *puVar18;
  undefined1 auStack_80 [4];
  uint local_7c;
  uint local_78;
  uint local_74;
  uint local_70;
  undefined4 *local_6c;
  int *local_68;
  uint local_64;
  undefined1 **local_60;
  undefined1 **local_5c;
  uint local_58;
  undefined **local_54;
  uint local_50;
  char local_49;
  int local_48;
  undefined1 **local_44;
  undefined4 local_40;
  undefined8 local_3c;
  undefined1 *local_34;
  undefined4 local_30;
  undefined1 local_2c [28];
  
  local_54 = &__DT_PLTGOT;
  if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {
    local_3c = *(undefined8 *)(param_1 + 9);
  }
  else {
    local_3c = (**(code **)(*param_1 + 0xc))(param_1);
  }
  local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);
  local_58 = local_78 + local_48;
  puVar14 = &local_7c;
  if (*(char *)(local_58 - 1) == '\0') {
LAB_001c8590:
    local_50 = local_58;
    puVar12 = (undefined1 *)puVar14;
  }
  else {
    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);
    puVar12 = local_34;
    iVar2 = param_2[1];
    uVar5 = gettext(local_54 + -0x3bc00);
                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */
    FUN_000654e0(uVar5,iVar2,puVar12);
    if (local_34 != local_2c) {
      FUN_001e6db0(local_34);
    }
    puVar12 = auStack_80;
    puVar14 = (uint *)auStack_80;
    if ((local_58 <= local_78) ||
       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))
    goto LAB_001c8590;
    do {
      local_50 = uVar10 - 1;
      if (local_78 == local_50) {
        local_50 = local_78;
        puVar12 = auStack_80;
        break;
      }
      pcVar1 = (char *)(uVar10 - 2);
      uVar10 = local_50;
    } while (*pcVar1 != '\0');
  }
  *(undefined4 *)(puVar12 + -0x10) = 0x14;
  *(undefined4 *)(puVar12 + -0x14) = 0x1c8350;
  local_44 = (undefined1 **)FUN_001e5200();
  local_44[2] = (undefined1 *)0x0;
  *local_44 = (undefined1 *)param_2;
  local_44[3] = (undefined1 *)0x0;
  puVar8 = (undefined4 *)param_1[0x2b];
  local_44[1] = param_3;
  local_44[4] = (undefined1 *)0x0;
  if (puVar8 == (undefined4 *)param_1[0x2c]) {
    *(undefined1 ****)(puVar12 + -8) = &local_44;
    *(undefined4 **)(puVar12 + -0xc) = puVar8;
    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;
    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;
    FUN_001c6ec0();
  }
  else {
    *puVar8 = local_44;
    param_1[0x2b] = (int)(puVar8 + 1);
  }
  local_5c = local_44 + 2;
  if (local_78 < local_50) {
    local_60 = local_44;
    uVar17 = 0;
    uVar10 = local_78;
    do {
      *(uint *)(puVar12 + -0x10) = uVar10;
      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;
      sVar6 = strlen(*(char **)(puVar12 + -0x10));
      ppuVar16 = local_60;
      uVar9 = uVar17 + 1;
      if (sVar6 != 0) {
        uVar9 = uVar17 + 2;
        uVar17 = uVar17 + 1;
      }
      uVar10 = uVar10 + 1 + sVar6;
    } while (uVar10 < local_50);
    uVar10 = uVar9;
    local_7c = uVar17;
    if (local_50 < local_58) {
      uVar10 = uVar9 + 1;
      local_7c = uVar9;
    }
    if (0x1fffffff < uVar10) {
      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;
                    /* WARNING: Subroutine does not return */
      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;
      FUN_0022c7a0();
    }
    puVar8 = (undefined4 *)local_60[2];
    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;
    puVar18 = (undefined4 *)local_60[3];
    local_68 = (int *)((int)puVar18 - (int)puVar8);
    local_64 = uVar10 * 8;
    if (uVar10 != 0) goto LAB_001c85d4;
    local_60 = (undefined1 **)0x0;
    ppuVar4 = local_60;
    puVar11 = puVar8;
  }
  else {
    puVar8 = (undefined4 *)local_44[2];
    local_7c = (uint)(local_50 < local_58);
    uVar10 = ~-(uint)(local_50 < local_58) + 2;
    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;
    puVar18 = (undefined4 *)local_44[3];
    local_64 = uVar10 * 8;
    local_68 = (int *)((int)puVar18 - (int)puVar8);
    ppuVar16 = local_44;
LAB_001c85d4:
    *(uint *)(puVar12 + -0x10) = local_64;
    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;
    local_6c = puVar8;
    local_60 = (undefined1 **)FUN_001e5200();
    puVar8 = local_6c;
    ppuVar4 = local_60;
    puVar11 = (undefined4 *)ppuVar16[2];
  }
  for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {
    puVar13 = (undefined1 *)puVar8[1];
    *ppuVar4 = (undefined1 *)*puVar8;
    ppuVar4[1] = puVar13;
    local_6c = puVar11;
    ppuVar4 = ppuVar4 + 2;
  }
  if (puVar11 != (undefined4 *)0x0) {
    *(undefined4 **)(puVar12 + -0x10) = puVar11;
    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;
    FUN_001e6db0();
  }
  ppuVar16[2] = (undefined1 *)local_60;
  ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);
  ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);
LAB_001c8419:
  uVar10 = local_50;
  local_74 = (int)local_3c - 1U & local_78;
  puVar13 = puVar12;
  if (local_78 < local_58) {
    local_64 = local_64 & 0xffffff00;
    local_68 = param_1 + 0x17;
    local_60 = &local_34;
    local_6c = &local_40;
    local_50 = local_78;
    local_70 = uVar10;
    puVar15 = (undefined1 *)0x0;
    do {
      sVar6 = local_58 - local_50;
      if (local_50 < local_70) {
        *(uint *)(puVar12 + -0x10) = local_50;
        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;
        sVar6 = strlen(*(char **)(puVar12 + -0x10));
      }
      if (sVar6 != 0) {
        uVar7 = (char)local_64;
        if (((int)local_3c - 1U & local_50) != local_74) {
          uVar7 = 1;
        }
        local_64 = CONCAT31(local_64._1_3_,uVar7);
      }
      *(undefined4 **)(puVar12 + -0x10) = local_6c;
      *(undefined4 *)(puVar12 + -0x14) = 1;
      *(size_t *)(puVar12 + -0x18) = sVar6;
      *(uint *)(puVar12 + -0x1c) = local_50;
      *(int **)(puVar12 + -0x20) = local_68;
      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;
      FUN_00174780();
      *(undefined1 ***)(puVar12 + -0xc) = local_60;
      *(undefined1 ***)(puVar12 + -0x10) = local_5c;
      local_30 = local_40;
      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;
      local_34 = puVar15;
      FUN_001c7520();
      ppuVar16 = local_60;
      local_50 = local_50 + sVar6 + 1;
      puVar15 = puVar15 + sVar6 + 1;
    } while (local_50 < local_58);
    local_30 = 0;
    *(undefined1 ***)(puVar12 + -0xc) = local_60;
    *(undefined1 ***)(puVar12 + -0x10) = local_5c;
    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;
    local_34 = puVar15;
    FUN_001c7520();
    param_1[0x2d] = param_1[0x2d] + local_7c;
    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);
    if ((char)local_64 != '\0') {
      iVar2 = *param_2;
      *(undefined1 **)(puVar12 + -8) = param_3;
      *(int **)(puVar12 + -0xc) = param_2;
      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;
      pcVar3 = *(code **)(iVar2 + 0x40);
      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;
      (*pcVar3)();
      puVar13 = local_34;
      iVar2 = param_2[1];
      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;
      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;
      uVar5 = gettext();
      *(undefined1 **)(puVar12 + -0xc) = puVar13;
      *(int *)(puVar12 + -0x10) = iVar2;
      *(undefined4 *)(puVar12 + -0x14) = uVar5;
                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */
      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;
      FUN_000654e0();
      puVar13 = puVar12 + -4;
      if (local_34 != local_2c) {
        *(undefined1 **)(puVar12 + -0x14) = local_34;
        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;
        FUN_001e6db0();
        puVar13 = puVar12 + -4;
      }
    }
  }
  else {
    local_34 = (undefined1 *)0x0;
    *(undefined1 ***)(puVar12 + -0xc) = &local_34;
    *(undefined1 ***)(puVar12 + -0x10) = local_5c;
    local_30 = 0;
    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;
    FUN_001c7520();
    param_1[0x2d] = param_1[0x2d] + local_7c;
  }
  if ((char)param_1[0xd] != '\0') {
    *(undefined1 **)(puVar13 + -8) = param_3;
    *(int **)(puVar13 + -0xc) = param_2;
    *(int **)(puVar13 + -0x10) = param_1;
    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;
    FUN_001c5140();
  }
  if ((local_49 != '\0') && (local_78 != 0)) {
    *(uint *)(puVar13 + -0x10) = local_78;
    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;
    FUN_001e6d50();
  }
  return 1;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
CALL 0x000559ea
ADD ESI,0x1c6db6
PUSH EBX
SUB ESP,0x6c
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX]
LEA EDX,[ESI + 0xffce45e0]
MOV dword ptr [EBP + -0x50],ESI
MOV EAX,dword ptr [EAX + 0xc]
CMP EAX,EDX
JNZ 0x001c8660
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EAX + 0x28]
MOV EAX,dword ptr [EAX + 0x24]
SUB ESP,0xc
MOV dword ptr [EBP + -0x38],EAX
LEA EAX,[EBP + -0x38]
MOV EBX,dword ptr [EBP + -0x50]
PUSH EAX
LEA EAX,[EBP + -0x45]
PUSH EAX
LEA EAX,[EBP + -0x44]
PUSH EAX
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
MOV dword ptr [EBP + -0x34],EDX
CALL 0x000b1f60
ADD ESP,0x20
MOV dword ptr [EBP + -0x74],EAX
ADD EAX,dword ptr [EBP + -0x44]
CMP byte ptr [EAX + -0x1],0x0
MOV dword ptr [EBP + -0x54],EAX
JZ 0x001c8590
MOV EAX,dword ptr [EBP + 0xc]
SUB ESP,0x4
LEA ESI,[EBP + -0x30]
MOV EAX,dword ptr [EAX]
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH ESI
CALL dword ptr [EAX + 0x40]
MOV EAX,dword ptr [EBP + 0xc]
MOV ECX,dword ptr [EBP + -0x50]
MOV EDI,dword ptr [EBP + -0x30]
MOV ESI,dword ptr [EAX + 0x4]
LEA EAX,[ECX + 0xfff11000]
MOV EBX,ECX
PUSH EAX
CALL 0x000293b0
ADD ESP,0xc
PUSH EDI
PUSH ESI
MOV ESI,dword ptr [EBP + -0x50]
PUSH EAX
MOV EBX,ESI
CALL 0x000654e0
MOV EAX,dword ptr [EBP + -0x30]
LEA EDX,[EBP + -0x28]
ADD ESP,0x10
CMP EAX,EDX
JZ 0x001c8307
SUB ESP,0xc
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x74]
MOV ECX,dword ptr [EBP + -0x54]
CMP EAX,ECX
JNC 0x001c8590
CMP byte ptr [ECX + -0x1],0x0
JZ 0x001c8590
MOV ESI,ECX
JMP 0x001c8332
CMP byte ptr [ESI + -0x1],0x0
JZ 0x001c8650
MOV ECX,ESI
SUB ECX,0x1
MOV ESI,ECX
CMP EAX,ECX
JNZ 0x001c8328
MOV EAX,dword ptr [EBP + -0x74]
MOV dword ptr [EBP + -0x4c],EAX
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x50]
PUSH 0x14
CALL 0x001e5200
MOV ESI,dword ptr [EBP + 0xc]
MOV EDX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV dword ptr [EAX + 0x8],0x0
MOV dword ptr [EAX],ESI
MOV ESI,dword ptr [EBP + 0x10]
MOV dword ptr [EAX + 0xc],0x0
MOV EDX,dword ptr [EDX + 0xac]
MOV dword ptr [EAX + 0x4],ESI
MOV ESI,dword ptr [EBP + 0x8]
MOV dword ptr [EAX + 0x10],0x0
MOV dword ptr [EBP + -0x40],EAX
CMP EDX,dword ptr [ESI + 0xb0]
JZ 0x001c8680
MOV dword ptr [EDX],EAX
ADD EDX,0x4
MOV dword ptr [ESI + 0xac],EDX
MOV ESI,dword ptr [EBP + -0x40]
MOV EDX,dword ptr [EBP + -0x74]
LEA EAX,[ESI + 0x8]
MOV dword ptr [EBP + -0x58],EAX
MOV EAX,dword ptr [EBP + -0x4c]
CMP EAX,EDX
JBE 0x001c86d8
MOV EDI,EDX
XOR EDX,EDX
MOV dword ptr [EBP + -0x5c],ESI
MOV ESI,EDI
MOV EDI,EDX
LEA ESI,[ESI]
NOP
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x50]
PUSH ESI
CALL 0x000295f0
ADD ESP,0x10
LEA EDX,[EDI + 0x1]
TEST EAX,EAX
JZ 0x001c83dd
LEA EBX,[EDI + 0x2]
MOV EDI,EDX
MOV EDX,EBX
LEA ESI,[ESI + EAX*0x1 + 0x1]
CMP dword ptr [EBP + -0x4c],ESI
JA 0x001c83c0
MOV ESI,dword ptr [EBP + -0x5c]
MOV EAX,dword ptr [EBP + -0x4c]
MOV dword ptr [EBP + -0x78],EDI
CMP EAX,dword ptr [EBP + -0x54]
JNC 0x001c83fa
MOV dword ptr [EBP + -0x78],EDX
ADD EDX,0x1
CMP EDX,0x1fffffff
JA 0x001c8717
MOV ECX,dword ptr [ESI + 0x8]
MOV EAX,dword ptr [ESI + 0x10]
SUB EAX,ECX
SAR EAX,0x3
CMP EAX,EDX
JC 0x001c85b8
MOV EAX,dword ptr [EBP + -0x38]
MOV EDI,dword ptr [EBP + -0x74]
SUB EAX,0x1
AND EAX,EDI
MOV dword ptr [EBP + -0x70],EAX
CMP EDI,dword ptr [EBP + -0x54]
JNC 0x001c86a0
MOV EAX,dword ptr [EBP + 0x8]
MOV byte ptr [EBP + -0x60],0x0
XOR ESI,ESI
ADD EAX,0x5c
MOV dword ptr [EBP + -0x64],EAX
LEA EAX,[EBP + -0x30]
MOV dword ptr [EBP + -0x5c],EAX
LEA EAX,[EBP + -0x3c]
MOV dword ptr [EBP + -0x68],EAX
MOV EAX,dword ptr [EBP + -0x4c]
MOV dword ptr [EBP + -0x4c],EDI
MOV dword ptr [EBP + -0x6c],EAX
LEA ESI,[ESI]
MOV EDI,dword ptr [EBP + -0x54]
MOV EAX,dword ptr [EBP + -0x4c]
SUB EDI,EAX
CMP dword ptr [EBP + -0x6c],EAX
JBE 0x001c8476
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x50]
PUSH EAX
CALL 0x000295f0
ADD ESP,0x10
MOV EDI,EAX
TEST EDI,EDI
JZ 0x001c8495
MOV EAX,dword ptr [EBP + -0x38]
MOVZX ECX,byte ptr [EBP + -0x60]
ADD EAX,-0x1
AND EAX,dword ptr [EBP + -0x4c]
CMP EAX,dword ptr [EBP + -0x70]
MOV EAX,0x1
CMOVNZ ECX,EAX
MOV byte ptr [EBP + -0x60],CL
SUB ESP,0xc
PUSH dword ptr [EBP + -0x68]
MOV EBX,dword ptr [EBP + -0x50]
PUSH 0x1
PUSH EDI
PUSH dword ptr [EBP + -0x4c]
PUSH dword ptr [EBP + -0x64]
CALL 0x00174780
ADD ESP,0x18
PUSH dword ptr [EBP + -0x5c]
MOV EAX,dword ptr [EBP + -0x3c]
PUSH dword ptr [EBP + -0x58]
MOV dword ptr [EBP + -0x30],ESI
MOV dword ptr [EBP + -0x2c],EAX
CALL 0x001c7520
LEA EDX,[EDI + 0x1]
ADD ESP,0x10
ADD dword ptr [EBP + -0x4c],EDX
ADD ESI,EDX
MOV EAX,dword ptr [EBP + -0x4c]
CMP dword ptr [EBP + -0x54],EAX
JA 0x001c8458
MOV EBX,dword ptr [EBP + -0x5c]
SUB ESP,0x8
MOV dword ptr [EBP + -0x30],ESI
MOV dword ptr [EBP + -0x2c],0x0
PUSH EBX
PUSH dword ptr [EBP + -0x58]
CALL 0x001c7520
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + -0x78]
ADD ESP,0x10
ADD dword ptr [EAX + 0xb4],EDX
ADD dword ptr [EAX + 0xb8],ESI
CMP byte ptr [EBP + -0x60],0x0
JZ 0x001c855d
MOV EAX,dword ptr [EBP + 0xc]
SUB ESP,0x4
MOV EAX,dword ptr [EAX]
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH EBX
CALL dword ptr [EAX + 0x40]
MOV EAX,dword ptr [EBP + 0xc]
MOV EBX,dword ptr [EBP + -0x50]
MOV EDI,dword ptr [EBP + -0x30]
MOV ESI,dword ptr [EAX + 0x4]
LEA EAX,[EBX + 0xfff11044]
PUSH EAX
CALL 0x000293b0
ADD ESP,0xc
PUSH EDI
PUSH ESI
MOV ESI,dword ptr [EBP + -0x50]
PUSH EAX
MOV EBX,ESI
CALL 0x000654e0
MOV EAX,dword ptr [EBP + -0x30]
LEA EDX,[EBP + -0x28]
ADD ESP,0x10
CMP EAX,EDX
JZ 0x001c855d
SUB ESP,0xc
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x8]
CMP byte ptr [EAX + 0x34],0x0
JNZ 0x001c85a0
CMP byte ptr [EBP + -0x45],0x0
JZ 0x001c8582
MOV EAX,dword ptr [EBP + -0x74]
TEST EAX,EAX
JZ 0x001c8582
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x50]
PUSH EAX
CALL 0x001e6d50
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + -0x54]
MOV dword ptr [EBP + -0x4c],EAX
JMP 0x001c8343
SUB ESP,0x4
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH EAX
CALL 0x001c5140
ADD ESP,0x10
JMP 0x001c8566
MOV EDI,dword ptr [ESI + 0xc]
MOV EAX,EDI
SUB EAX,ECX
MOV dword ptr [EBP + -0x64],EAX
LEA EAX,[EDX*0x8 + 0x0]
MOV dword ptr [EBP + -0x60],EAX
TEST EDX,EDX
JZ 0x001c8670
SUB ESP,0xc
PUSH dword ptr [EBP + -0x60]
MOV EBX,dword ptr [EBP + -0x50]
MOV dword ptr [EBP + -0x68],ECX
CALL 0x001e5200
MOV EBX,dword ptr [ESI + 0x8]
MOV ECX,dword ptr [EBP + -0x68]
ADD ESP,0x10
MOV dword ptr [EBP + -0x5c],EAX
MOV EAX,ECX
MOV EDX,dword ptr [EBP + -0x5c]
CMP ECX,EDI
JZ 0x001c8618
MOV dword ptr [EBP + -0x68],EBX
LEA ESI,[ESI]
MOV ECX,dword ptr [EAX + 0x4]
MOV EBX,dword ptr [EAX]
ADD EAX,0x8
ADD EDX,0x8
MOV dword ptr [EDX + -0x8],EBX
MOV dword ptr [EDX + -0x4],ECX
CMP EDI,EAX
JNZ 0x001c8600
MOV EBX,dword ptr [EBP + -0x68]
TEST EBX,EBX
JZ 0x001c862b
SUB ESP,0xc
PUSH EBX
MOV EBX,dword ptr [EBP + -0x50]
CALL 0x001e6db0
ADD ESP,0x10
MOV ECX,dword ptr [EBP + -0x5c]
MOV EAX,dword ptr [EBP + -0x64]
ADD EAX,ECX
MOV dword ptr [ESI + 0x8],ECX
MOV dword ptr [ESI + 0xc],EAX
MOV EAX,dword ptr [EBP + -0x60]
ADD EAX,ECX
MOV dword ptr [ESI + 0x10],EAX
JMP 0x001c8419
MOV dword ptr [EBP + -0x4c],ESI
JMP 0x001c8343
SUB ESP,0xc
PUSH dword ptr [EBP + 0x8]
CALL EAX
ADD ESP,0x10
JMP 0x001c8276
MOV EBX,ECX
MOV dword ptr [EBP + -0x5c],0x0
JMP 0x001c85f1
SUB ESP,0x4
LEA EAX,[EBP + -0x40]
PUSH EAX
MOV EAX,dword ptr [EBP + 0x8]
PUSH EDX
ADD EAX,0xa8
PUSH EAX
CALL 0x001c6ec0
ADD ESP,0x10
JMP 0x001c8399
SUB ESP,0x8
LEA EAX,[EBP + -0x30]
MOV dword ptr [EBP + -0x30],0x0
PUSH EAX
PUSH dword ptr [EBP + -0x58]
MOV dword ptr [EBP + -0x2c],0x0
CALL 0x001c7520
MOV EAX,dword ptr [EBP + 0x8]
MOV ESI,dword ptr [EBP + -0x78]
ADD ESP,0x10
ADD dword ptr [EAX + 0xb4],ESI
JMP 0x001c855d
MOV EDX,dword ptr [EBP + -0x54]
MOV EBX,dword ptr [EBP + -0x4c]
XOR EAX,EAX
MOV ECX,dword ptr [ESI + 0x8]
CMP EBX,EDX
MOV EDX,dword ptr [ESI + 0x10]
SETC AL
MOV dword ptr [EBP + -0x78],EAX
SBB EAX,EAX
SUB EDX,ECX
NOT EAX
SAR EDX,0x3
ADD EAX,0x2
CMP EDX,EAX
JNC 0x001c8419
MOV EDI,dword ptr [ESI + 0xc]
SHL EAX,0x3
MOV dword ptr [EBP + -0x60],EAX
MOV EBX,EDI
SUB EBX,ECX
MOV dword ptr [EBP + -0x64],EBX
JMP 0x001c85d4
MOV EBX,dword ptr [EBP + -0x50]
SUB ESP,0xc
LEA EAX,[EBX + 0xffef1583]
PUSH EAX
CALL 0x0022c7a0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nundefined4 FUN_001c8240(int *param_1,int *param_2,undefined1 *param_3)\n\n{\n  char *pcVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined1 **ppuVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  undefined1 uVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined1 *puVar12;\n  undefined1 *puVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  undefined1 **ppuVar16;\n  uint uVar17;\n  undefined4 *puVar18;\n  undefined1 auStack_80 [4];\n  uint local_7c;\n  uint local_78;\n  uint local_74;\n  uint local_70;\n  undefined4 *local_6c;\n  int *local_68;\n  uint local_64;\n  undefined1 **local_60;\n  undefined1 **local_5c;\n  uint local_58;\n  undefined **local_54;\n  uint local_50;\n  char local_49;\n  int local_48;\n  undefined1 **local_44;\n  undefined4 local_40;\n  undefined8 local_3c;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  local_54 = &__DT_PLTGOT;\n  if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }\n  else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }\n  local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);\n  local_58 = local_78 + local_48;\n  puVar14 = &local_7c;\n  if (*(char *)(local_58 - 1) == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }\n  else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }\n  *(undefined4 *)(puVar12 + -0x10) = 0x14;\n  *(undefined4 *)(puVar12 + -0x14) = 0x1c8350;\n  local_44 = (undefined1 **)FUN_001e5200();\n  local_44[2] = (undefined1 *)0x0;\n  *local_44 = (undefined1 *)param_2;\n  local_44[3] = (undefined1 *)0x0;\n  puVar8 = (undefined4 *)param_1[0x2b];\n  local_44[1] = param_3;\n  local_44[4] = (undefined1 *)0x0;\n  if (puVar8 == (undefined4 *)param_1[0x2c]) {\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }\n  else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }\n  local_5c = local_44 + 2;\n  if (local_78 < local_50) {\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }\n  else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }\n  for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }\n  if (puVar11 != (undefined4 *)0x0) {\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }\n  ppuVar16[2] = (undefined1 *)local_60;\n  ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);\n  ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);\nLAB_001c8419:\n  uVar10 = local_50;\n  local_74 = (int)local_3c - 1U & local_78;\n  puVar13 = puVar12;\n  if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }\n  else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }\n  if ((char)param_1[0xd] != '\0') {\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }\n  if ((local_49 != '\0') && (local_78 != 0)) {\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }\n  return 1;\n}\n\n" comment (function_definition "undefined4 FUN_001c8240(int *param_1,int *param_2,undefined1 *param_3)\n\n{\n  char *pcVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined1 **ppuVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  undefined1 uVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined1 *puVar12;\n  undefined1 *puVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  undefined1 **ppuVar16;\n  uint uVar17;\n  undefined4 *puVar18;\n  undefined1 auStack_80 [4];\n  uint local_7c;\n  uint local_78;\n  uint local_74;\n  uint local_70;\n  undefined4 *local_6c;\n  int *local_68;\n  uint local_64;\n  undefined1 **local_60;\n  undefined1 **local_5c;\n  uint local_58;\n  undefined **local_54;\n  uint local_50;\n  char local_49;\n  int local_48;\n  undefined1 **local_44;\n  undefined4 local_40;\n  undefined8 local_3c;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  local_54 = &__DT_PLTGOT;\n  if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }\n  else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }\n  local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);\n  local_58 = local_78 + local_48;\n  puVar14 = &local_7c;\n  if (*(char *)(local_58 - 1) == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }\n  else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }\n  *(undefined4 *)(puVar12 + -0x10) = 0x14;\n  *(undefined4 *)(puVar12 + -0x14) = 0x1c8350;\n  local_44 = (undefined1 **)FUN_001e5200();\n  local_44[2] = (undefined1 *)0x0;\n  *local_44 = (undefined1 *)param_2;\n  local_44[3] = (undefined1 *)0x0;\n  puVar8 = (undefined4 *)param_1[0x2b];\n  local_44[1] = param_3;\n  local_44[4] = (undefined1 *)0x0;\n  if (puVar8 == (undefined4 *)param_1[0x2c]) {\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }\n  else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }\n  local_5c = local_44 + 2;\n  if (local_78 < local_50) {\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }\n  else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }\n  for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }\n  if (puVar11 != (undefined4 *)0x0) {\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }\n  ppuVar16[2] = (undefined1 *)local_60;\n  ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);\n  ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);\nLAB_001c8419:\n  uVar10 = local_50;\n  local_74 = (int)local_3c - 1U & local_78;\n  puVar13 = puVar12;\n  if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }\n  else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }\n  if ((char)param_1[0xd] != '\0') {\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }\n  if ((local_49 != '\0') && (local_78 != 0)) {\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_001c8240(int *param_1,int *param_2,undefined1 *param_3)" identifier (parameter_list "(int *param_1,int *param_2,undefined1 *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined1 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined1 **ppuVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  undefined1 uVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined1 *puVar12;\n  undefined1 *puVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  undefined1 **ppuVar16;\n  uint uVar17;\n  undefined4 *puVar18;\n  undefined1 auStack_80 [4];\n  uint local_7c;\n  uint local_78;\n  uint local_74;\n  uint local_70;\n  undefined4 *local_6c;\n  int *local_68;\n  uint local_64;\n  undefined1 **local_60;\n  undefined1 **local_5c;\n  uint local_58;\n  undefined **local_54;\n  uint local_50;\n  char local_49;\n  int local_48;\n  undefined1 **local_44;\n  undefined4 local_40;\n  undefined8 local_3c;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  local_54 = &__DT_PLTGOT;\n  if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }\n  else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }\n  local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);\n  local_58 = local_78 + local_48;\n  puVar14 = &local_7c;\n  if (*(char *)(local_58 - 1) == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }\n  else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }\n  *(undefined4 *)(puVar12 + -0x10) = 0x14;\n  *(undefined4 *)(puVar12 + -0x14) = 0x1c8350;\n  local_44 = (undefined1 **)FUN_001e5200();\n  local_44[2] = (undefined1 *)0x0;\n  *local_44 = (undefined1 *)param_2;\n  local_44[3] = (undefined1 *)0x0;\n  puVar8 = (undefined4 *)param_1[0x2b];\n  local_44[1] = param_3;\n  local_44[4] = (undefined1 *)0x0;\n  if (puVar8 == (undefined4 *)param_1[0x2c]) {\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }\n  else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }\n  local_5c = local_44 + 2;\n  if (local_78 < local_50) {\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }\n  else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }\n  for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }\n  if (puVar11 != (undefined4 *)0x0) {\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }\n  ppuVar16[2] = (undefined1 *)local_60;\n  ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);\n  ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);\nLAB_001c8419:\n  uVar10 = local_50;\n  local_74 = (int)local_3c - 1U & local_78;\n  puVar13 = puVar12;\n  if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }\n  else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }\n  if ((char)param_1[0xd] != '\0') {\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }\n  if ((local_49 != '\0') && (local_78 != 0)) {\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }\n  return 1;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined1 **ppuVar4;" type_identifier (pointer_declarator "**ppuVar4" * (pointer_declarator "*ppuVar4" * identifier)) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "undefined1 uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 **ppuVar16;" type_identifier (pointer_declarator "**ppuVar16" * (pointer_declarator "*ppuVar16" * identifier)) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined1 auStack_80 [4];" type_identifier (array_declarator "auStack_80 [4]" identifier [ number_literal ]) ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "uint local_74;" type_identifier identifier ;) (declaration "uint local_70;" type_identifier identifier ;) (declaration "undefined4 *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "int *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "undefined1 **local_60;" type_identifier (pointer_declarator "**local_60" * (pointer_declarator "*local_60" * identifier)) ;) (declaration "undefined1 **local_5c;" type_identifier (pointer_declarator "**local_5c" * (pointer_declarator "*local_5c" * identifier)) ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "undefined **local_54;" type_identifier (pointer_declarator "**local_54" * (pointer_declarator "*local_54" * identifier)) ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "char local_49;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined1 **local_44;" type_identifier (pointer_declarator "**local_44" * (pointer_declarator "*local_44" * identifier)) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined8 local_3c;" type_identifier identifier ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "local_54 = &__DT_PLTGOT;" (assignment_expression "local_54 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }\n  else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0xc) == FUN_000735e0)" ( (binary_expression "*(code **)(*param_1 + 0xc) == FUN_000735e0" (pointer_expression "*(code **)(*param_1 + 0xc)" * (cast_expression "(code **)(*param_1 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }" { (expression_statement "local_3c = *(undefined8 *)(param_1 + 9);" (assignment_expression "local_3c = *(undefined8 *)(param_1 + 9)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 9)" * (cast_expression "(undefined8 *)(param_1 + 9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }" else (compound_statement "{\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }" { (expression_statement "local_3c = (**(code **)(*param_1 + 0xc))(param_1);" (assignment_expression "local_3c = (**(code **)(*param_1 + 0xc))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0xc))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xc))" ( (pointer_expression "**(code **)(*param_1 + 0xc)" * (pointer_expression "*(code **)(*param_1 + 0xc)" * (cast_expression "(code **)(*param_1 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (expression_statement "local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);" (assignment_expression "local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c)" identifier = (call_expression "FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c)" identifier (argument_list "(param_2,param_3,&local_48,&local_49,&local_3c)" ( identifier , identifier , (pointer_expression "&local_48" & identifier) , (pointer_expression "&local_49" & identifier) , (pointer_expression "&local_3c" & identifier) )))) ;) (expression_statement "local_58 = local_78 + local_48;" (assignment_expression "local_58 = local_78 + local_48" identifier = (binary_expression "local_78 + local_48" identifier + identifier)) ;) (expression_statement "puVar14 = &local_7c;" (assignment_expression "puVar14 = &local_7c" identifier = (pointer_expression "&local_7c" & identifier)) ;) (if_statement "if (*(char *)(local_58 - 1) == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }\n  else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }" if (parenthesized_expression "(*(char *)(local_58 - 1) == '\0')" ( (binary_expression "*(char *)(local_58 - 1) == '\0'" (pointer_expression "*(char *)(local_58 - 1)" * (cast_expression "(char *)(local_58 - 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 - 1)" ( (binary_expression "local_58 - 1" identifier - number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }" { (labeled_statement "LAB_001c8590:\n    local_50 = local_58;" statement_identifier : (expression_statement "local_50 = local_58;" (assignment_expression "local_50 = local_58" identifier = identifier) ;)) (expression_statement "puVar12 = (undefined1 *)puVar14;" (assignment_expression "puVar12 = (undefined1 *)puVar14" identifier = (cast_expression "(undefined1 *)puVar14" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }" else (compound_statement "{\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }" { (expression_statement "(**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);" (call_expression "(**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3)" (parenthesized_expression "(**(code **)(*param_2 + 0x40))" ( (pointer_expression "**(code **)(*param_2 + 0x40)" * (pointer_expression "*(code **)(*param_2 + 0x40)" * (cast_expression "(code **)(*param_2 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x40)" ( (binary_expression "*param_2 + 0x40" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(&local_34,param_2,param_3)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier ))) ;) (expression_statement "puVar12 = local_34;" (assignment_expression "puVar12 = local_34" identifier = identifier) ;) (expression_statement "iVar2 = param_2[1];" (assignment_expression "iVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = gettext(local_54 + -0x3bc00);" (assignment_expression "uVar5 = gettext(local_54 + -0x3bc00)" identifier = (call_expression "gettext(local_54 + -0x3bc00)" identifier (argument_list "(local_54 + -0x3bc00)" ( (binary_expression "local_54 + -0x3bc00" identifier + number_literal) )))) ;) comment (expression_statement "FUN_000654e0(uVar5,iVar2,puVar12);" (call_expression "FUN_000654e0(uVar5,iVar2,puVar12)" identifier (argument_list "(uVar5,iVar2,puVar12)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n      FUN_001e6db0(local_34);\n    }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (expression_statement "puVar12 = auStack_80;" (assignment_expression "puVar12 = auStack_80" identifier = identifier) ;) (expression_statement "puVar14 = (uint *)auStack_80;" (assignment_expression "puVar14 = (uint *)auStack_80" identifier = (cast_expression "(uint *)auStack_80" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;" if (parenthesized_expression "((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))" ( (binary_expression "(local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0')" (parenthesized_expression "(local_58 <= local_78)" ( (binary_expression "local_58 <= local_78" identifier <= identifier) )) || (parenthesized_expression "(puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0')" ( (comma_expression "puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'" (assignment_expression "puVar14 = (uint *)auStack_80" identifier = (cast_expression "(uint *)auStack_80" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (comma_expression "uVar10 = local_58, *(char *)(local_58 - 1) == '\0'" (assignment_expression "uVar10 = local_58" identifier = identifier) , (binary_expression "*(char *)(local_58 - 1) == '\0'" (pointer_expression "*(char *)(local_58 - 1)" * (cast_expression "(char *)(local_58 - 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 - 1)" ( (binary_expression "local_58 - 1" identifier - number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')))) ))) )) (goto_statement "goto LAB_001c8590;" goto statement_identifier ;)) (do_statement "do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');" do (compound_statement "{\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    }" { (expression_statement "local_50 = uVar10 - 1;" (assignment_expression "local_50 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (if_statement "if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }" if (parenthesized_expression "(local_78 == local_50)" ( (binary_expression "local_78 == local_50" identifier == identifier) )) (compound_statement "{\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }" { (expression_statement "local_50 = local_78;" (assignment_expression "local_50 = local_78" identifier = identifier) ;) (expression_statement "puVar12 = auStack_80;" (assignment_expression "puVar12 = auStack_80" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "pcVar1 = (char *)(uVar10 - 2);" (assignment_expression "pcVar1 = (char *)(uVar10 - 2)" identifier = (cast_expression "(char *)(uVar10 - 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 - 2)" ( (binary_expression "uVar10 - 2" identifier - number_literal) )))) ;) (expression_statement "uVar10 = local_50;" (assignment_expression "uVar10 = local_50" identifier = identifier) ;) }) while (parenthesized_expression "(*pcVar1 != '\0')" ( (binary_expression "*pcVar1 != '\0'" (pointer_expression "*pcVar1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) ;) }))) (expression_statement "*(undefined4 *)(puVar12 + -0x10) = 0x14;" (assignment_expression "*(undefined4 *)(puVar12 + -0x10) = 0x14" (pointer_expression "*(undefined4 *)(puVar12 + -0x10)" * (cast_expression "(undefined4 *)(puVar12 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8350;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8350" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_44 = (undefined1 **)FUN_001e5200();" (assignment_expression "local_44 = (undefined1 **)FUN_001e5200()" identifier = (cast_expression "(undefined1 **)FUN_001e5200()" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "FUN_001e5200()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_44[2] = (undefined1 *)0x0;" (assignment_expression "local_44[2] = (undefined1 *)0x0" (subscript_expression "local_44[2]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*local_44 = (undefined1 *)param_2;" (assignment_expression "*local_44 = (undefined1 *)param_2" (pointer_expression "*local_44" * identifier) = (cast_expression "(undefined1 *)param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_44[3] = (undefined1 *)0x0;" (assignment_expression "local_44[3] = (undefined1 *)0x0" (subscript_expression "local_44[3]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar8 = (undefined4 *)param_1[0x2b];" (assignment_expression "puVar8 = (undefined4 *)param_1[0x2b]" identifier = (cast_expression "(undefined4 *)param_1[0x2b]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x2b]" identifier [ number_literal ]))) ;) (expression_statement "local_44[1] = param_3;" (assignment_expression "local_44[1] = param_3" (subscript_expression "local_44[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_44[4] = (undefined1 *)0x0;" (assignment_expression "local_44[4] = (undefined1 *)0x0" (subscript_expression "local_44[4]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (puVar8 == (undefined4 *)param_1[0x2c]) {\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }\n  else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }" if (parenthesized_expression "(puVar8 == (undefined4 *)param_1[0x2c])" ( (binary_expression "puVar8 == (undefined4 *)param_1[0x2c]" identifier == (cast_expression "(undefined4 *)param_1[0x2c]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x2c]" identifier [ number_literal ]))) )) (compound_statement "{\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }" { (expression_statement "*(undefined1 ****)(puVar12 + -8) = &local_44;" (assignment_expression "*(undefined1 ****)(puVar12 + -8) = &local_44" (pointer_expression "*(undefined1 ****)(puVar12 + -8)" * (cast_expression "(undefined1 ****)(puVar12 + -8)" ( (type_descriptor "undefined1 ****" type_identifier (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))) ) (parenthesized_expression "(puVar12 + -8)" ( (binary_expression "puVar12 + -8" identifier + number_literal) )))) = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "*(undefined4 **)(puVar12 + -0xc) = puVar8;" (assignment_expression "*(undefined4 **)(puVar12 + -0xc) = puVar8" (pointer_expression "*(undefined4 **)(puVar12 + -0xc)" * (cast_expression "(undefined4 **)(puVar12 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar12 + -0x10) = param_1 + 0x2a;" (assignment_expression "*(int **)(puVar12 + -0x10) = param_1 + 0x2a" (pointer_expression "*(int **)(puVar12 + -0x10)" * (cast_expression "(int **)(puVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = (binary_expression "param_1 + 0x2a" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8696;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8696" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c6ec0();" (call_expression "FUN_001c6ec0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }" else (compound_statement "{\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }" { (expression_statement "*puVar8 = local_44;" (assignment_expression "*puVar8 = local_44" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "param_1[0x2b] = (int)(puVar8 + 1);" (assignment_expression "param_1[0x2b] = (int)(puVar8 + 1)" (subscript_expression "param_1[0x2b]" identifier [ number_literal ]) = (cast_expression "(int)(puVar8 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) )))) ;) }))) (expression_statement "local_5c = local_44 + 2;" (assignment_expression "local_5c = local_44 + 2" identifier = (binary_expression "local_44 + 2" identifier + number_literal)) ;) (if_statement "if (local_78 < local_50) {\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }\n  else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }" if (parenthesized_expression "(local_78 < local_50)" ( (binary_expression "local_78 < local_50" identifier < identifier) )) (compound_statement "{\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }" { (expression_statement "local_60 = local_44;" (assignment_expression "local_60 = local_44" identifier = identifier) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = local_78;" (assignment_expression "uVar10 = local_78" identifier = identifier) ;) (do_statement "do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);" do (compound_statement "{\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    }" { (expression_statement "*(uint *)(puVar12 + -0x10) = uVar10;" (assignment_expression "*(uint *)(puVar12 + -0x10) = uVar10" (pointer_expression "*(uint *)(puVar12 + -0x10)" * (cast_expression "(uint *)(puVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c83cc" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "sVar6 = strlen(*(char **)(puVar12 + -0x10));" (assignment_expression "sVar6 = strlen(*(char **)(puVar12 + -0x10))" identifier = (call_expression "strlen(*(char **)(puVar12 + -0x10))" identifier (argument_list "(*(char **)(puVar12 + -0x10))" ( (pointer_expression "*(char **)(puVar12 + -0x10)" * (cast_expression "(char **)(puVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "ppuVar16 = local_60;" (assignment_expression "ppuVar16 = local_60" identifier = identifier) ;) (expression_statement "uVar9 = uVar17 + 1;" (assignment_expression "uVar9 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (if_statement "if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }" if (parenthesized_expression "(sVar6 != 0)" ( (binary_expression "sVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }" { (expression_statement "uVar9 = uVar17 + 2;" (assignment_expression "uVar9 = uVar17 + 2" identifier = (binary_expression "uVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar10 = uVar10 + 1 + sVar6;" (assignment_expression "uVar10 = uVar10 + 1 + sVar6" identifier = (binary_expression "uVar10 + 1 + sVar6" (binary_expression "uVar10 + 1" identifier + number_literal) + identifier)) ;) }) while (parenthesized_expression "(uVar10 < local_50)" ( (binary_expression "uVar10 < local_50" identifier < identifier) )) ;) (expression_statement "uVar10 = uVar9;" (assignment_expression "uVar10 = uVar9" identifier = identifier) ;) (expression_statement "local_7c = uVar17;" (assignment_expression "local_7c = uVar17" identifier = identifier) ;) (if_statement "if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }" if (parenthesized_expression "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) )) (compound_statement "{\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }" { (expression_statement "uVar10 = uVar9 + 1;" (assignment_expression "uVar10 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "local_7c = uVar9;" (assignment_expression "local_7c = uVar9" identifier = identifier) ;) })) (if_statement "if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }" if (parenthesized_expression "(0x1fffffff < uVar10)" ( (binary_expression "0x1fffffff < uVar10" number_literal < identifier) )) (compound_statement "{\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }" { (expression_statement "*(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;" (assignment_expression "*(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d" (pointer_expression "*(int *)(puVar12 + -0x10)" * (cast_expression "(int *)(puVar12 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = (binary_expression "(int)local_54 + -0x10ea7d" (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) comment (expression_statement "*(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;" (assignment_expression "*(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729" (pointer_expression "*(undefined1 **)(puVar12 + -0x14)" * (cast_expression "(undefined1 **)(puVar12 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = (pointer_expression "&LAB_001c8729" & identifier)) ;) (expression_statement "FUN_0022c7a0();" (call_expression "FUN_0022c7a0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puVar8 = (undefined4 *)local_60[2];" (assignment_expression "puVar8 = (undefined4 *)local_60[2]" identifier = (cast_expression "(undefined4 *)local_60[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_60[2]" identifier [ number_literal ]))) ;) (if_statement "if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;" if (parenthesized_expression "(uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3))" ( (binary_expression "uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)" identifier <= (call_expression "(uint)((int)local_60[4] - (int)puVar8 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)local_60[4] - (int)puVar8 >> 3)" ( (binary_expression "(int)local_60[4] - (int)puVar8 >> 3" (binary_expression "(int)local_60[4] - (int)puVar8" (cast_expression "(int)local_60[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_60[4]" identifier [ number_literal ])) - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) (goto_statement "goto LAB_001c8419;" goto statement_identifier ;)) (expression_statement "puVar18 = (undefined4 *)local_60[3];" (assignment_expression "puVar18 = (undefined4 *)local_60[3]" identifier = (cast_expression "(undefined4 *)local_60[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_60[3]" identifier [ number_literal ]))) ;) (expression_statement "local_68 = (int *)((int)puVar18 - (int)puVar8);" (assignment_expression "local_68 = (int *)((int)puVar18 - (int)puVar8)" identifier = (cast_expression "(int *)((int)puVar18 - (int)puVar8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 - (int)puVar8)" ( (binary_expression "(int)puVar18 - (int)puVar8" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_64 = uVar10 * 8;" (assignment_expression "local_64 = uVar10 * 8" identifier = (binary_expression "uVar10 * 8" identifier * number_literal)) ;) (if_statement "if (uVar10 != 0) goto LAB_001c85d4;" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c85d4;" goto statement_identifier ;)) (expression_statement "local_60 = (undefined1 **)0x0;" (assignment_expression "local_60 = (undefined1 **)0x0" identifier = (cast_expression "(undefined1 **)0x0" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "ppuVar4 = local_60;" (assignment_expression "ppuVar4 = local_60" identifier = identifier) ;) (expression_statement "puVar11 = puVar8;" (assignment_expression "puVar11 = puVar8" identifier = identifier) ;) }) (else_clause "else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }" else (compound_statement "{\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }" { (expression_statement "puVar8 = (undefined4 *)local_44[2];" (assignment_expression "puVar8 = (undefined4 *)local_44[2]" identifier = (cast_expression "(undefined4 *)local_44[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_44[2]" identifier [ number_literal ]))) ;) (expression_statement "local_7c = (uint)(local_50 < local_58);" (assignment_expression "local_7c = (uint)(local_50 < local_58)" identifier = (call_expression "(uint)(local_50 < local_58)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) )))) ;) (expression_statement "uVar10 = ~-(uint)(local_50 < local_58) + 2;" (assignment_expression "uVar10 = ~-(uint)(local_50 < local_58) + 2" identifier = (binary_expression "~-(uint)(local_50 < local_58) + 2" (unary_expression "~-(uint)(local_50 < local_58)" ~ (unary_expression "-(uint)(local_50 < local_58)" - (call_expression "(uint)(local_50 < local_58)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) ))))) + number_literal)) ;) (if_statement "if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;" if (parenthesized_expression "(uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3))" ( (binary_expression "uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)" identifier <= (call_expression "(uint)((int)local_44[4] - (int)puVar8 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)local_44[4] - (int)puVar8 >> 3)" ( (binary_expression "(int)local_44[4] - (int)puVar8 >> 3" (binary_expression "(int)local_44[4] - (int)puVar8" (cast_expression "(int)local_44[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_44[4]" identifier [ number_literal ])) - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) (goto_statement "goto LAB_001c8419;" goto statement_identifier ;)) (expression_statement "puVar18 = (undefined4 *)local_44[3];" (assignment_expression "puVar18 = (undefined4 *)local_44[3]" identifier = (cast_expression "(undefined4 *)local_44[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_44[3]" identifier [ number_literal ]))) ;) (expression_statement "local_64 = uVar10 * 8;" (assignment_expression "local_64 = uVar10 * 8" identifier = (binary_expression "uVar10 * 8" identifier * number_literal)) ;) (expression_statement "local_68 = (int *)((int)puVar18 - (int)puVar8);" (assignment_expression "local_68 = (int *)((int)puVar18 - (int)puVar8)" identifier = (cast_expression "(int *)((int)puVar18 - (int)puVar8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 - (int)puVar8)" ( (binary_expression "(int)puVar18 - (int)puVar8" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "ppuVar16 = local_44;" (assignment_expression "ppuVar16 = local_44" identifier = identifier) ;) (labeled_statement "LAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;" statement_identifier : (expression_statement "*(uint *)(puVar12 + -0x10) = local_64;" (assignment_expression "*(uint *)(puVar12 + -0x10) = local_64" (pointer_expression "*(uint *)(puVar12 + -0x10)" * (cast_expression "(uint *)(puVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c85e5" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_6c = puVar8;" (assignment_expression "local_6c = puVar8" identifier = identifier) ;) (expression_statement "local_60 = (undefined1 **)FUN_001e5200();" (assignment_expression "local_60 = (undefined1 **)FUN_001e5200()" identifier = (cast_expression "(undefined1 **)FUN_001e5200()" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "FUN_001e5200()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar8 = local_6c;" (assignment_expression "puVar8 = local_6c" identifier = identifier) ;) (expression_statement "ppuVar4 = local_60;" (assignment_expression "ppuVar4 = local_60" identifier = identifier) ;) (expression_statement "puVar11 = (undefined4 *)ppuVar16[2];" (assignment_expression "puVar11 = (undefined4 *)ppuVar16[2]" identifier = (cast_expression "(undefined4 *)ppuVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "ppuVar16[2]" identifier [ number_literal ]))) ;) }))) (for_statement "for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }" for ( ; (binary_expression "puVar8 != puVar18" identifier != identifier) ; (assignment_expression "puVar8 = puVar8 + 2" identifier = (binary_expression "puVar8 + 2" identifier + number_literal)) ) (compound_statement "{\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }" { (expression_statement "puVar13 = (undefined1 *)puVar8[1];" (assignment_expression "puVar13 = (undefined1 *)puVar8[1]" identifier = (cast_expression "(undefined1 *)puVar8[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "*ppuVar4 = (undefined1 *)*puVar8;" (assignment_expression "*ppuVar4 = (undefined1 *)*puVar8" (pointer_expression "*ppuVar4" * identifier) = (cast_expression "(undefined1 *)*puVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "ppuVar4[1] = puVar13;" (assignment_expression "ppuVar4[1] = puVar13" (subscript_expression "ppuVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_6c = puVar11;" (assignment_expression "local_6c = puVar11" identifier = identifier) ;) (expression_statement "ppuVar4 = ppuVar4 + 2;" (assignment_expression "ppuVar4 = ppuVar4 + 2" identifier = (binary_expression "ppuVar4 + 2" identifier + number_literal)) ;) })) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }" if (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" ( (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }" { (expression_statement "*(undefined4 **)(puVar12 + -0x10) = puVar11;" (assignment_expression "*(undefined4 **)(puVar12 + -0x10) = puVar11" (pointer_expression "*(undefined4 **)(puVar12 + -0x10)" * (cast_expression "(undefined4 **)(puVar12 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8628;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8628" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "ppuVar16[2] = (undefined1 *)local_60;" (assignment_expression "ppuVar16[2] = (undefined1 *)local_60" (subscript_expression "ppuVar16[2]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)local_60" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);" (assignment_expression "ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60)" (subscript_expression "ppuVar16[3]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)((int)local_68 + (int)local_60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_68 + (int)local_60)" ( (binary_expression "(int)local_68 + (int)local_60" (cast_expression "(int)local_68" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);" (assignment_expression "ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60)" (subscript_expression "ppuVar16[4]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)(local_64 + (int)local_60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + (int)local_60)" ( (binary_expression "local_64 + (int)local_60" identifier + (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (labeled_statement "LAB_001c8419:\n  uVar10 = local_50;" statement_identifier : (expression_statement "uVar10 = local_50;" (assignment_expression "uVar10 = local_50" identifier = identifier) ;)) (expression_statement "local_74 = (int)local_3c - 1U & local_78;" (assignment_expression "local_74 = (int)local_3c - 1U & local_78" identifier = (binary_expression "(int)local_3c - 1U & local_78" (binary_expression "(int)local_3c - 1U" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & identifier)) ;) (expression_statement "puVar13 = puVar12;" (assignment_expression "puVar13 = puVar12" identifier = identifier) ;) (if_statement "if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }\n  else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }" if (parenthesized_expression "(local_78 < local_58)" ( (binary_expression "local_78 < local_58" identifier < identifier) )) (compound_statement "{\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }" { (expression_statement "local_64 = local_64 & 0xffffff00;" (assignment_expression "local_64 = local_64 & 0xffffff00" identifier = (binary_expression "local_64 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "local_68 = param_1 + 0x17;" (assignment_expression "local_68 = param_1 + 0x17" identifier = (binary_expression "param_1 + 0x17" identifier + number_literal)) ;) (expression_statement "local_60 = &local_34;" (assignment_expression "local_60 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_6c = &local_40;" (assignment_expression "local_6c = &local_40" identifier = (pointer_expression "&local_40" & identifier)) ;) (expression_statement "local_50 = local_78;" (assignment_expression "local_50 = local_78" identifier = identifier) ;) (expression_statement "local_70 = uVar10;" (assignment_expression "local_70 = uVar10" identifier = identifier) ;) (expression_statement "puVar15 = (undefined1 *)0x0;" (assignment_expression "puVar15 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);" do (compound_statement "{\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    }" { (expression_statement "sVar6 = local_58 - local_50;" (assignment_expression "sVar6 = local_58 - local_50" identifier = (binary_expression "local_58 - local_50" identifier - identifier)) ;) (if_statement "if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }" if (parenthesized_expression "(local_50 < local_70)" ( (binary_expression "local_50 < local_70" identifier < identifier) )) (compound_statement "{\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }" { (expression_statement "*(uint *)(puVar12 + -0x10) = local_50;" (assignment_expression "*(uint *)(puVar12 + -0x10) = local_50" (pointer_expression "*(uint *)(puVar12 + -0x10)" * (cast_expression "(uint *)(puVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8471;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8471" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "sVar6 = strlen(*(char **)(puVar12 + -0x10));" (assignment_expression "sVar6 = strlen(*(char **)(puVar12 + -0x10))" identifier = (call_expression "strlen(*(char **)(puVar12 + -0x10))" identifier (argument_list "(*(char **)(puVar12 + -0x10))" ( (pointer_expression "*(char **)(puVar12 + -0x10)" * (cast_expression "(char **)(puVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) )))) ;) })) (if_statement "if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }" if (parenthesized_expression "(sVar6 != 0)" ( (binary_expression "sVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }" { (expression_statement "uVar7 = (char)local_64;" (assignment_expression "uVar7 = (char)local_64" identifier = (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }" if (parenthesized_expression "(((int)local_3c - 1U & local_50) != local_74)" ( (binary_expression "((int)local_3c - 1U & local_50) != local_74" (parenthesized_expression "((int)local_3c - 1U & local_50)" ( (binary_expression "(int)local_3c - 1U & local_50" (binary_expression "(int)local_3c - 1U" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & identifier) )) != identifier) )) (compound_statement "{\n          uVar7 = 1;\n        }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) })) (expression_statement "local_64 = CONCAT31(local_64._1_3_,uVar7);" (assignment_expression "local_64 = CONCAT31(local_64._1_3_,uVar7)" identifier = (call_expression "CONCAT31(local_64._1_3_,uVar7)" identifier (argument_list "(local_64._1_3_,uVar7)" ( (field_expression "local_64._1_3_" identifier . field_identifier) , identifier )))) ;) })) (expression_statement "*(undefined4 **)(puVar12 + -0x10) = local_6c;" (assignment_expression "*(undefined4 **)(puVar12 + -0x10) = local_6c" (pointer_expression "*(undefined4 **)(puVar12 + -0x10)" * (cast_expression "(undefined4 **)(puVar12 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 1;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 1" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(size_t *)(puVar12 + -0x18) = sVar6;" (assignment_expression "*(size_t *)(puVar12 + -0x18) = sVar6" (pointer_expression "*(size_t *)(puVar12 + -0x18)" * (cast_expression "(size_t *)(puVar12 + -0x18)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x18)" ( (binary_expression "puVar12 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar12 + -0x1c) = local_50;" (assignment_expression "*(uint *)(puVar12 + -0x1c) = local_50" (pointer_expression "*(uint *)(puVar12 + -0x1c)" * (cast_expression "(uint *)(puVar12 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x1c)" ( (binary_expression "puVar12 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar12 + -0x20) = local_68;" (assignment_expression "*(int **)(puVar12 + -0x20) = local_68" (pointer_expression "*(int **)(puVar12 + -0x20)" * (cast_expression "(int **)(puVar12 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x20)" ( (binary_expression "puVar12 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;" (assignment_expression "*(undefined4 *)(puVar12 + -0x24) = 0x1c84ac" (pointer_expression "*(undefined4 *)(puVar12 + -0x24)" * (cast_expression "(undefined4 *)(puVar12 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x24)" ( (binary_expression "puVar12 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00174780();" (call_expression "FUN_00174780()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0xc) = local_60;" (assignment_expression "*(undefined1 ***)(puVar12 + -0xc) = local_60" (pointer_expression "*(undefined1 ***)(puVar12 + -0xc)" * (cast_expression "(undefined1 ***)(puVar12 + -0xc)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = local_5c;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = local_5c" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" * (cast_expression "(undefined1 ***)(puVar12 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_30 = local_40;" (assignment_expression "local_30 = local_40" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c84c3" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_34 = puVar15;" (assignment_expression "local_34 = puVar15" identifier = identifier) ;) (expression_statement "FUN_001c7520();" (call_expression "FUN_001c7520()" identifier (argument_list "()" ( ))) ;) (expression_statement "ppuVar16 = local_60;" (assignment_expression "ppuVar16 = local_60" identifier = identifier) ;) (expression_statement "local_50 = local_50 + sVar6 + 1;" (assignment_expression "local_50 = local_50 + sVar6 + 1" identifier = (binary_expression "local_50 + sVar6 + 1" (binary_expression "local_50 + sVar6" identifier + identifier) + number_literal)) ;) (expression_statement "puVar15 = puVar15 + sVar6 + 1;" (assignment_expression "puVar15 = puVar15 + sVar6 + 1" identifier = (binary_expression "puVar15 + sVar6 + 1" (binary_expression "puVar15 + sVar6" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) )) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0xc) = local_60;" (assignment_expression "*(undefined1 ***)(puVar12 + -0xc) = local_60" (pointer_expression "*(undefined1 ***)(puVar12 + -0xc)" * (cast_expression "(undefined1 ***)(puVar12 + -0xc)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = local_5c;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = local_5c" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" * (cast_expression "(undefined1 ***)(puVar12 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c84ef" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_34 = puVar15;" (assignment_expression "local_34 = puVar15" identifier = identifier) ;) (expression_statement "FUN_001c7520();" (call_expression "FUN_001c7520()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[0x2d] = param_1[0x2d] + local_7c;" (assignment_expression "param_1[0x2d] = param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) = (binary_expression "param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);" (assignment_expression "param_1[0x2e] = (int)(puVar15 + param_1[0x2e])" (subscript_expression "param_1[0x2e]" identifier [ number_literal ]) = (cast_expression "(int)(puVar15 + param_1[0x2e])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar15 + param_1[0x2e])" ( (binary_expression "puVar15 + param_1[0x2e]" identifier + (subscript_expression "param_1[0x2e]" identifier [ number_literal ])) )))) ;) (if_statement "if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }" if (parenthesized_expression "((char)local_64 != '\0')" ( (binary_expression "(char)local_64 != '\0'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }" { (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined1 **)(puVar12 + -8) = param_3;" (assignment_expression "*(undefined1 **)(puVar12 + -8) = param_3" (pointer_expression "*(undefined1 **)(puVar12 + -8)" * (cast_expression "(undefined1 **)(puVar12 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -8)" ( (binary_expression "puVar12 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar12 + -0xc) = param_2;" (assignment_expression "*(int **)(puVar12 + -0xc) = param_2" (pointer_expression "*(int **)(puVar12 + -0xc)" * (cast_expression "(int **)(puVar12 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = ppuVar16;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = ppuVar16" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" * (cast_expression "(undefined1 ***)(puVar12 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar2 + 0x40);" (assignment_expression "pcVar3 = *(code **)(iVar2 + 0x40)" identifier = (pointer_expression "*(code **)(iVar2 + 0x40)" * (cast_expression "(code **)(iVar2 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x40)" ( (binary_expression "iVar2 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c851c;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c851c" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar13 = local_34;" (assignment_expression "puVar13 = local_34" identifier = identifier) ;) (expression_statement "iVar2 = param_2[1];" (assignment_expression "iVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;" (assignment_expression "*(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef" (pointer_expression "*(undefined ***)(puVar12 + -0x14)" * (cast_expression "(undefined ***)(puVar12 + -0x14)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = (binary_expression "local_54 + -0x3bbef" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x18) = 0x1c8534;" (assignment_expression "*(undefined4 *)(puVar12 + -0x18) = 0x1c8534" (pointer_expression "*(undefined4 *)(puVar12 + -0x18)" * (cast_expression "(undefined4 *)(puVar12 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x18)" ( (binary_expression "puVar12 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar5 = gettext();" (assignment_expression "uVar5 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 **)(puVar12 + -0xc) = puVar13;" (assignment_expression "*(undefined1 **)(puVar12 + -0xc) = puVar13" (pointer_expression "*(undefined1 **)(puVar12 + -0xc)" * (cast_expression "(undefined1 **)(puVar12 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar12 + -0x10) = iVar2;" (assignment_expression "*(int *)(puVar12 + -0x10) = iVar2" (pointer_expression "*(int *)(puVar12 + -0x10)" * (cast_expression "(int *)(puVar12 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = uVar5;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = uVar5" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)(puVar12 + -0x18) = 0x1c8544;" (assignment_expression "*(undefined4 *)(puVar12 + -0x18) = 0x1c8544" (pointer_expression "*(undefined4 *)(puVar12 + -0x18)" * (cast_expression "(undefined4 *)(puVar12 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x18)" ( (binary_expression "puVar12 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000654e0();" (call_expression "FUN_000654e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar13 = puVar12 + -4;" (assignment_expression "puVar13 = puVar12 + -4" identifier = (binary_expression "puVar12 + -4" identifier + number_literal)) ;) (if_statement "if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }" { (expression_statement "*(undefined1 **)(puVar12 + -0x14) = local_34;" (assignment_expression "*(undefined1 **)(puVar12 + -0x14) = local_34" (pointer_expression "*(undefined1 **)(puVar12 + -0x14)" * (cast_expression "(undefined1 **)(puVar12 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x18) = 0x1c855a;" (assignment_expression "*(undefined4 *)(puVar12 + -0x18) = 0x1c855a" (pointer_expression "*(undefined4 *)(puVar12 + -0x18)" * (cast_expression "(undefined4 *)(puVar12 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x18)" ( (binary_expression "puVar12 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar13 = puVar12 + -4;" (assignment_expression "puVar13 = puVar12 + -4" identifier = (binary_expression "puVar12 + -4" identifier + number_literal)) ;) })) })) }) (else_clause "else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }" else (compound_statement "{\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }" { (expression_statement "local_34 = (undefined1 *)0x0;" (assignment_expression "local_34 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0xc) = &local_34;" (assignment_expression "*(undefined1 ***)(puVar12 + -0xc) = &local_34" (pointer_expression "*(undefined1 ***)(puVar12 + -0xc)" * (cast_expression "(undefined1 ***)(puVar12 + -0xc)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = local_5c;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = local_5c" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" * (cast_expression "(undefined1 ***)(puVar12 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c86bd" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c7520();" (call_expression "FUN_001c7520()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[0x2d] = param_1[0x2d] + local_7c;" (assignment_expression "param_1[0x2d] = param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) = (binary_expression "param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) + identifier)) ;) }))) (if_statement "if ((char)param_1[0xd] != '\0') {\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }" if (parenthesized_expression "((char)param_1[0xd] != '\0')" ( (binary_expression "(char)param_1[0xd] != '\0'" (cast_expression "(char)param_1[0xd]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0xd]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }" { (expression_statement "*(undefined1 **)(puVar13 + -8) = param_3;" (assignment_expression "*(undefined1 **)(puVar13 + -8) = param_3" (pointer_expression "*(undefined1 **)(puVar13 + -8)" * (cast_expression "(undefined1 **)(puVar13 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + -8)" ( (binary_expression "puVar13 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar13 + -0xc) = param_2;" (assignment_expression "*(int **)(puVar13 + -0xc) = param_2" (pointer_expression "*(int **)(puVar13 + -0xc)" * (cast_expression "(int **)(puVar13 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + -0xc)" ( (binary_expression "puVar13 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar13 + -0x10) = param_1;" (assignment_expression "*(int **)(puVar13 + -0x10) = param_1" (pointer_expression "*(int **)(puVar13 + -0x10)" * (cast_expression "(int **)(puVar13 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + -0x10)" ( (binary_expression "puVar13 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar13 + -0x14) = 0x1c85af;" (assignment_expression "*(undefined4 *)(puVar13 + -0x14) = 0x1c85af" (pointer_expression "*(undefined4 *)(puVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -0x14)" ( (binary_expression "puVar13 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c5140();" (call_expression "FUN_001c5140()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((local_49 != '\0') && (local_78 != 0)) {\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }" if (parenthesized_expression "((local_49 != '\0') && (local_78 != 0))" ( (binary_expression "(local_49 != '\0') && (local_78 != 0)" (parenthesized_expression "(local_49 != '\0')" ( (binary_expression "local_49 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_78 != 0)" ( (binary_expression "local_78 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }" { (expression_statement "*(uint *)(puVar13 + -0x10) = local_78;" (assignment_expression "*(uint *)(puVar13 + -0x10) = local_78" (pointer_expression "*(uint *)(puVar13 + -0x10)" * (cast_expression "(uint *)(puVar13 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -0x10)" ( (binary_expression "puVar13 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar13 + -0x14) = 0x1c857f;" (assignment_expression "*(undefined4 *)(puVar13 + -0x14) = 0x1c857f" (pointer_expression "*(undefined4 *)(puVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -0x14)" ( (binary_expression "puVar13 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6d50();" (call_expression "FUN_001e6d50()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: bool do_add_input_section(Output_merge_string<char> * this, Relobj *\n   object, uint shndx) */\n\nbool __thiscall\ngold::Output_merge_string<char>::do_add_input_section\n          (Output_merge_string<char> *this,Relobj *object,uint shndx)\n\n{\n  uchar *puVar1;\n  _func_int_varargs *p_Var2;\n  pointer pcVar3;\n  pointer ppMVar4;\n  _func_int_varargs **pp_Var5;\n  Key KVar6;\n  Merged_strings_list *pMVar7;\n  char *format;\n  size_t sVar8;\n  undefined4 uVar9;\n  undefined1 uVar10;\n  pointer pMVar11;\n  uint uVar12;\n  uint uVar13;\n  undefined4 extraout_EDX;\n  pointer pMVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  uint *puVar17;\n  uchar *puVar18;\n  Relobj *pRVar19;\n  Merged_strings_list *pMVar20;\n  uint uVar21;\n  pointer pMVar22;\n  undefined1 auStack_80 [4];\n  uint local_7c;\n  uchar *local_78;\n  uint local_74;\n  uchar *local_70;\n  pointer local_6c;\n  Stringpool_template<char> *local_68;\n  uint local_64;\n  Merged_strings_list *local_60;\n  Merged_strings *local_5c;\n  uchar *local_58;\n  undefined **local_54;\n  uchar *local_50;\n  bool is_new;\n  section_size_type sec_len;\n  Merged_strings_list *merged_strings_list;\n  Key key;\n  uint64_t addralign;\n  Merged_strings_list local_34;\n  \n  local_54 = &_GLOBAL_OFFSET_TABLE_;\n  p_Var2 = (this->super_Output_merge_base).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3];\n  if (p_Var2 == Output_section_data::do_addralign) {\n    addralign._4_4_ =\n         *(undefined4 *)\n          ((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4);\n    addralign._0_4_ = (int)(this->super_Output_merge_base).super_Output_section_data.addralign_;\n  }\n  else {\n    addralign._0_4_ = (*p_Var2)(this);\n    addralign._4_4_ = extraout_EDX;\n  }\n  local_78 = Object::decompressed_section_contents\n                       (&object->super_Object,shndx,&sec_len,&is_new,&addralign);\n  local_58 = local_78 + sec_len;\n  puVar17 = &local_7c;\n  if (local_58[-1] == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar15 = (undefined1 *)puVar17;\n  }\n  else {\n    (*(object->super_Object)._vptr_Object[0x10])(&local_34,object,shndx);\n    pRVar19 = local_34.object;\n    pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n    format = (char *)gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    gold_warning(format,pcVar3,pRVar19);\n    if (local_34.object != (Relobj *)&local_34.merged_strings) {\n      operator_delete(local_34.object);\n    }\n    puVar15 = auStack_80;\n    puVar17 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0')) goto LAB_001c8590;\n    do {\n      local_50 = puVar18 + -1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar15 = auStack_80;\n        break;\n      }\n      puVar1 = puVar18 + -2;\n      puVar18 = local_50;\n    } while (*puVar1 != '\0');\n  }\n  *(undefined4 *)(puVar15 + -0x10) = 0x14;\n  *(undefined4 *)(puVar15 + -0x14) = 0x1c8350;\n  merged_strings_list = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));\n  (merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start = (pointer)0x0;\n  merged_strings_list->object = object;\n  (merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish = (pointer)0x0;\n  ppMVar4 = (this->merged_strings_lists_).\n            super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n            ._M_impl._M_finish;\n  merged_strings_list->shndx = shndx;\n  (merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0;\n  if (ppMVar4 ==\n      (this->merged_strings_lists_).\n      super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n      ._M_impl._M_end_of_storage) {\n    *(Merged_strings_list ***)(puVar15 + -8) = &merged_strings_list;\n    *(pointer *)(puVar15 + -0xc) = ppMVar4;\n    *(Merged_strings_lists **)(puVar15 + -0x10) = &this->merged_strings_lists_;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c8696;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ::_M_realloc_insert<gold::Output_merge_string<char>::Merged_strings_list*_const&>\n              (*(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)(puVar15 + -0x10),(iterator)*(Merged_strings_list ***)(puVar15 + -0xc),\n               *(Merged_strings_list ***)(puVar15 + -8));\n  }\n  else {\n    *ppMVar4 = merged_strings_list;\n    (this->merged_strings_lists_).\n    super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ._M_impl._M_finish = ppMVar4 + 1;\n  }\n  local_5c = &merged_strings_list->merged_strings;\n  if (local_78 < local_50) {\n    local_60 = merged_strings_list;\n    uVar21 = 0;\n    puVar18 = local_78;\n    do {\n      *(uchar **)(puVar15 + -0x10) = puVar18;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c83cc;\n      sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      pMVar20 = local_60;\n      uVar12 = uVar21 + 1;\n      if (sVar8 != 0) {\n        uVar12 = uVar21 + 2;\n        uVar21 = uVar21 + 1;\n      }\n      puVar18 = puVar18 + sVar8 + 1;\n    } while (puVar18 < local_50);\n    uVar13 = uVar12;\n    local_7c = uVar21;\n    if (local_50 < local_58) {\n      uVar13 = uVar12 + 1;\n      local_7c = uVar12;\n    }\n    if (0x1fffffff < uVar13) {\n      *(int *)(puVar15 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar15 + -0x14) = &LAB_001c8729;\n      std::__throw_length_error(*(char **)(puVar15 + -0x10));\n    }\n    pMVar11 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n    if (uVar13 <= (uint)((int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;\n    pMVar22 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;\n    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);\n    local_64 = uVar13 * 8;\n    if (uVar13 != 0) goto LAB_001c85d4;\n    local_60 = (Merged_strings_list *)0x0;\n    pMVar7 = local_60;\n    pMVar14 = pMVar11;\n  }\n  else {\n    pMVar11 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n    local_7c = (uint)(local_50 < local_58);\n    uVar21 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar21 <= (uint)((int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;\n    pMVar22 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;\n    local_64 = uVar21 * 8;\n    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);\n    pMVar20 = merged_strings_list;\nLAB_001c85d4:\n    *(uint *)(puVar15 + -0x10) = local_64;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c85e5;\n    local_6c = pMVar11;\n    local_60 = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));\n    pMVar11 = local_6c;\n    pMVar7 = local_60;\n    pMVar14 = (pMVar20->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n  }\n  for (; pMVar11 != pMVar22; pMVar11 = pMVar11 + 1) {\n    KVar6 = pMVar11->stringpool_key;\n    pMVar7->object = (Relobj *)pMVar11->offset;\n    pMVar7->shndx = KVar6;\n    local_6c = pMVar14;\n    pMVar7 = (Merged_strings_list *)&pMVar7->merged_strings;\n  }\n  if (pMVar14 != (pointer)0x0) {\n    *(pointer *)(puVar15 + -0x10) = pMVar14;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c8628;\n    operator_delete(*(void **)(puVar15 + -0x10));\n  }\n  (pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start = (pointer)local_60;\n  (pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish = (pointer)((int)&(local_68->string_set_)._M_h._M_buckets + (int)local_60);\n  (pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage = (pointer)((int)&local_60->object + local_64);\nLAB_001c8419:\n  puVar18 = local_50;\n  local_74 = (int)addralign - 1U & (uint)local_78;\n  puVar16 = puVar15;\n  if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = &this->stringpool_;\n    local_60 = &local_34;\n    local_6c = (pointer)&key;\n    local_50 = local_78;\n    local_70 = puVar18;\n    pRVar19 = (Relobj *)0x0;\n    do {\n      sVar8 = (int)local_58 - (int)local_50;\n      if (local_50 < local_70) {\n        *(uchar **)(puVar15 + -0x10) = local_50;\n        *(undefined4 *)(puVar15 + -0x14) = 0x1c8471;\n        sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      }\n      if (sVar8 != 0) {\n        uVar10 = (char)local_64;\n        if (((int)addralign - 1U & (uint)local_50) != local_74) {\n          uVar10 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar10);\n      }\n      *(pointer *)(puVar15 + -0x10) = local_6c;\n      *(undefined4 *)(puVar15 + -0x14) = 1;\n      *(size_t *)(puVar15 + -0x18) = sVar8;\n      *(uchar **)(puVar15 + -0x1c) = local_50;\n      *(Stringpool_template<char> **)(puVar15 + -0x20) = local_68;\n      *(undefined4 *)(puVar15 + -0x24) = 0x1c84ac;\n      Stringpool_template<char>::add_with_length\n                (*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),\n                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10));\n      *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n      *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n      local_34.shndx = key;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c84c3;\n      local_34.object = pRVar19;\n      std::\n      vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n      ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n                (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n      pMVar20 = local_60;\n      local_50 = local_50 + sVar8 + 1;\n      pRVar19 = (Relobj *)((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1);\n    } while (local_50 < local_58);\n    local_34.shndx = 0;\n    *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n    *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c84ef;\n    local_34.object = pRVar19;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n    this->input_count_ = this->input_count_ + local_7c;\n    this->input_size_ = (size_t)((int)&(pRVar19->super_Object)._vptr_Object + this->input_size_);\n    if ((char)local_64 != '\0') {\n      pp_Var5 = (object->super_Object)._vptr_Object;\n      *(uint *)(puVar15 + -8) = shndx;\n      *(Relobj **)(puVar15 + -0xc) = object;\n      *(Merged_strings_list **)(puVar15 + -0x10) = pMVar20;\n      p_Var2 = pp_Var5[0x10];\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c851c;\n      (*p_Var2)();\n      pRVar19 = local_34.object;\n      pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n      *(undefined ***)(puVar15 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8534;\n      uVar9 = gettext();\n      *(Relobj **)(puVar15 + -0xc) = pRVar19;\n      *(pointer *)(puVar15 + -0x10) = pcVar3;\n      *(undefined4 *)(puVar15 + -0x14) = uVar9;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8544;\n      gold_warning(*(char **)(puVar15 + -0x14));\n      puVar16 = puVar15 + -4;\n      if (local_34.object != (Relobj *)&local_34.merged_strings) {\n        *(Relobj **)(puVar15 + -0x14) = local_34.object;\n        *(undefined4 *)(puVar15 + -0x18) = 0x1c855a;\n        operator_delete(*(void **)(puVar15 + -0x14));\n        puVar16 = puVar15 + -4;\n      }\n    }\n  }\n  else {\n    local_34.object = (Relobj *)0x0;\n    *(Merged_strings_list **)(puVar15 + -0xc) = &local_34;\n    *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n    local_34.shndx = 0;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c86bd;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n    this->input_count_ = this->input_count_ + local_7c;\n  }\n  if ((this->super_Output_merge_base).keeps_input_sections_ != false) {\n    *(uint *)(puVar16 + -8) = shndx;\n    *(Relobj **)(puVar16 + -0xc) = object;\n    *(Output_merge_string<char> **)(puVar16 + -0x10) = this;\n    *(undefined4 *)(puVar16 + -0x14) = 0x1c85af;\n    Output_merge_base::record_input_section\n              (*(Output_merge_base **)(puVar16 + -0x10),*(Relobj **)(puVar16 + -0xc),\n               *(uint *)(puVar16 + -8));\n  }\n  if ((is_new != false) && (local_78 != (uchar *)0x0)) {\n    *(uchar **)(puVar16 + -0x10) = local_78;\n    *(undefined4 *)(puVar16 + -0x14) = 0x1c857f;\n    operator_delete__(*(void **)(puVar16 + -0x10));\n  }\n  return true;\n}\n\n" comment comment comment (function_definition "bool __thiscall\ngold::Output_merge_string<char>::do_add_input_section\n          (Output_merge_string<char> *this,Relobj *object,uint shndx)\n\n{\n  uchar *puVar1;\n  _func_int_varargs *p_Var2;\n  pointer pcVar3;\n  pointer ppMVar4;\n  _func_int_varargs **pp_Var5;\n  Key KVar6;\n  Merged_strings_list *pMVar7;\n  char *format;\n  size_t sVar8;\n  undefined4 uVar9;\n  undefined1 uVar10;\n  pointer pMVar11;\n  uint uVar12;\n  uint uVar13;\n  undefined4 extraout_EDX;\n  pointer pMVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  uint *puVar17;\n  uchar *puVar18;\n  Relobj *pRVar19;\n  Merged_strings_list *pMVar20;\n  uint uVar21;\n  pointer pMVar22;\n  undefined1 auStack_80 [4];\n  uint local_7c;\n  uchar *local_78;\n  uint local_74;\n  uchar *local_70;\n  pointer local_6c;\n  Stringpool_template<char> *local_68;\n  uint local_64;\n  Merged_strings_list *local_60;\n  Merged_strings *local_5c;\n  uchar *local_58;\n  undefined **local_54;\n  uchar *local_50;\n  bool is_new;\n  section_size_type sec_len;\n  Merged_strings_list *merged_strings_list;\n  Key key;\n  uint64_t addralign;\n  Merged_strings_list local_34;\n  \n  local_54 = &_GLOBAL_OFFSET_TABLE_;\n  p_Var2 = (this->super_Output_merge_base).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3];\n  if (p_Var2 == Output_section_data::do_addralign) {\n    addralign._4_4_ =\n         *(undefined4 *)\n          ((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4);\n    addralign._0_4_ = (int)(this->super_Output_merge_base).super_Output_section_data.addralign_;\n  }\n  else {\n    addralign._0_4_ = (*p_Var2)(this);\n    addralign._4_4_ = extraout_EDX;\n  }\n  local_78 = Object::decompressed_section_contents\n                       (&object->super_Object,shndx,&sec_len,&is_new,&addralign);\n  local_58 = local_78 + sec_len;\n  puVar17 = &local_7c;\n  if (local_58[-1] == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar15 = (undefined1 *)puVar17;\n  }\n  else {\n    (*(object->super_Object)._vptr_Object[0x10])(&local_34,object,shndx);\n    pRVar19 = local_34.object;\n    pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n    format = (char *)gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    gold_warning(format,pcVar3,pRVar19);\n    if (local_34.object != (Relobj *)&local_34.merged_strings) {\n      operator_delete(local_34.object);\n    }\n    puVar15 = auStack_80;\n    puVar17 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0')) goto LAB_001c8590;\n    do {\n      local_50 = puVar18 + -1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar15 = auStack_80;\n        break;\n      }\n      puVar1 = puVar18 + -2;\n      puVar18 = local_50;\n    } while (*puVar1 != '\0');\n  }\n  *(undefined4 *)(puVar15 + -0x10) = 0x14;\n  *(undefined4 *)(puVar15 + -0x14) = 0x1c8350;\n  merged_strings_list = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));\n  (merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start = (pointer)0x0;\n  merged_strings_list->object = object;\n  (merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish = (pointer)0x0;\n  ppMVar4 = (this->merged_strings_lists_).\n            super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n            ._M_impl._M_finish;\n  merged_strings_list->shndx = shndx;\n  (merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0;\n  if (ppMVar4 ==\n      (this->merged_strings_lists_).\n      super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n      ._M_impl._M_end_of_storage) {\n    *(Merged_strings_list ***)(puVar15 + -8) = &merged_strings_list;\n    *(pointer *)(puVar15 + -0xc) = ppMVar4;\n    *(Merged_strings_lists **)(puVar15 + -0x10) = &this->merged_strings_lists_;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c8696;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ::_M_realloc_insert<gold::Output_merge_string<char>::Merged_strings_list*_const&>\n              (*(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)(puVar15 + -0x10),(iterator)*(Merged_strings_list ***)(puVar15 + -0xc),\n               *(Merged_strings_list ***)(puVar15 + -8));\n  }\n  else {\n    *ppMVar4 = merged_strings_list;\n    (this->merged_strings_lists_).\n    super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ._M_impl._M_finish = ppMVar4 + 1;\n  }\n  local_5c = &merged_strings_list->merged_strings;\n  if (local_78 < local_50) {\n    local_60 = merged_strings_list;\n    uVar21 = 0;\n    puVar18 = local_78;\n    do {\n      *(uchar **)(puVar15 + -0x10) = puVar18;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c83cc;\n      sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      pMVar20 = local_60;\n      uVar12 = uVar21 + 1;\n      if (sVar8 != 0) {\n        uVar12 = uVar21 + 2;\n        uVar21 = uVar21 + 1;\n      }\n      puVar18 = puVar18 + sVar8 + 1;\n    } while (puVar18 < local_50);\n    uVar13 = uVar12;\n    local_7c = uVar21;\n    if (local_50 < local_58) {\n      uVar13 = uVar12 + 1;\n      local_7c = uVar12;\n    }\n    if (0x1fffffff < uVar13) {\n      *(int *)(puVar15 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar15 + -0x14) = &LAB_001c8729;\n      std::__throw_length_error(*(char **)(puVar15 + -0x10));\n    }\n    pMVar11 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n    if (uVar13 <= (uint)((int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;\n    pMVar22 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;\n    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);\n    local_64 = uVar13 * 8;\n    if (uVar13 != 0) goto LAB_001c85d4;\n    local_60 = (Merged_strings_list *)0x0;\n    pMVar7 = local_60;\n    pMVar14 = pMVar11;\n  }\n  else {\n    pMVar11 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n    local_7c = (uint)(local_50 < local_58);\n    uVar21 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar21 <= (uint)((int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;\n    pMVar22 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;\n    local_64 = uVar21 * 8;\n    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);\n    pMVar20 = merged_strings_list;\nLAB_001c85d4:\n    *(uint *)(puVar15 + -0x10) = local_64;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c85e5;\n    local_6c = pMVar11;\n    local_60 = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));\n    pMVar11 = local_6c;\n    pMVar7 = local_60;\n    pMVar14 = (pMVar20->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n  }\n  for (; pMVar11 != pMVar22; pMVar11 = pMVar11 + 1) {\n    KVar6 = pMVar11->stringpool_key;\n    pMVar7->object = (Relobj *)pMVar11->offset;\n    pMVar7->shndx = KVar6;\n    local_6c = pMVar14;\n    pMVar7 = (Merged_strings_list *)&pMVar7->merged_strings;\n  }\n  if (pMVar14 != (pointer)0x0) {\n    *(pointer *)(puVar15 + -0x10) = pMVar14;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c8628;\n    operator_delete(*(void **)(puVar15 + -0x10));\n  }\n  (pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start = (pointer)local_60;\n  (pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish = (pointer)((int)&(local_68->string_set_)._M_h._M_buckets + (int)local_60);\n  (pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage = (pointer)((int)&local_60->object + local_64);\nLAB_001c8419:\n  puVar18 = local_50;\n  local_74 = (int)addralign - 1U & (uint)local_78;\n  puVar16 = puVar15;\n  if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = &this->stringpool_;\n    local_60 = &local_34;\n    local_6c = (pointer)&key;\n    local_50 = local_78;\n    local_70 = puVar18;\n    pRVar19 = (Relobj *)0x0;\n    do {\n      sVar8 = (int)local_58 - (int)local_50;\n      if (local_50 < local_70) {\n        *(uchar **)(puVar15 + -0x10) = local_50;\n        *(undefined4 *)(puVar15 + -0x14) = 0x1c8471;\n        sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      }\n      if (sVar8 != 0) {\n        uVar10 = (char)local_64;\n        if (((int)addralign - 1U & (uint)local_50) != local_74) {\n          uVar10 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar10);\n      }\n      *(pointer *)(puVar15 + -0x10) = local_6c;\n      *(undefined4 *)(puVar15 + -0x14) = 1;\n      *(size_t *)(puVar15 + -0x18) = sVar8;\n      *(uchar **)(puVar15 + -0x1c) = local_50;\n      *(Stringpool_template<char> **)(puVar15 + -0x20) = local_68;\n      *(undefined4 *)(puVar15 + -0x24) = 0x1c84ac;\n      Stringpool_template<char>::add_with_length\n                (*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),\n                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10));\n      *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n      *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n      local_34.shndx = key;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c84c3;\n      local_34.object = pRVar19;\n      std::\n      vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n      ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n                (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n      pMVar20 = local_60;\n      local_50 = local_50 + sVar8 + 1;\n      pRVar19 = (Relobj *)((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1);\n    } while (local_50 < local_58);\n    local_34.shndx = 0;\n    *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n    *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c84ef;\n    local_34.object = pRVar19;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n    this->input_count_ = this->input_count_ + local_7c;\n    this->input_size_ = (size_t)((int)&(pRVar19->super_Object)._vptr_Object + this->input_size_);\n    if ((char)local_64 != '\0') {\n      pp_Var5 = (object->super_Object)._vptr_Object;\n      *(uint *)(puVar15 + -8) = shndx;\n      *(Relobj **)(puVar15 + -0xc) = object;\n      *(Merged_strings_list **)(puVar15 + -0x10) = pMVar20;\n      p_Var2 = pp_Var5[0x10];\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c851c;\n      (*p_Var2)();\n      pRVar19 = local_34.object;\n      pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n      *(undefined ***)(puVar15 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8534;\n      uVar9 = gettext();\n      *(Relobj **)(puVar15 + -0xc) = pRVar19;\n      *(pointer *)(puVar15 + -0x10) = pcVar3;\n      *(undefined4 *)(puVar15 + -0x14) = uVar9;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8544;\n      gold_warning(*(char **)(puVar15 + -0x14));\n      puVar16 = puVar15 + -4;\n      if (local_34.object != (Relobj *)&local_34.merged_strings) {\n        *(Relobj **)(puVar15 + -0x14) = local_34.object;\n        *(undefined4 *)(puVar15 + -0x18) = 0x1c855a;\n        operator_delete(*(void **)(puVar15 + -0x14));\n        puVar16 = puVar15 + -4;\n      }\n    }\n  }\n  else {\n    local_34.object = (Relobj *)0x0;\n    *(Merged_strings_list **)(puVar15 + -0xc) = &local_34;\n    *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n    local_34.shndx = 0;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c86bd;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n    this->input_count_ = this->input_count_ + local_7c;\n  }\n  if ((this->super_Output_merge_base).keeps_input_sections_ != false) {\n    *(uint *)(puVar16 + -8) = shndx;\n    *(Relobj **)(puVar16 + -0xc) = object;\n    *(Output_merge_string<char> **)(puVar16 + -0x10) = this;\n    *(undefined4 *)(puVar16 + -0x14) = 0x1c85af;\n    Output_merge_base::record_input_section\n              (*(Output_merge_base **)(puVar16 + -0x10),*(Relobj **)(puVar16 + -0xc),\n               *(uint *)(puVar16 + -8));\n  }\n  if ((is_new != false) && (local_78 != (uchar *)0x0)) {\n    *(uchar **)(puVar16 + -0x10) = local_78;\n    *(undefined4 *)(puVar16 + -0x14) = 0x1c857f;\n    operator_delete__(*(void **)(puVar16 + -0x10));\n  }\n  return true;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_merge_string<char>::" identifier : : identifier < primitive_type > : :) (function_declarator "do_add_input_section\n          (Output_merge_string<char> *this,Relobj *object,uint shndx)" identifier (parameter_list "(Output_merge_string<char> *this,Relobj *object,uint shndx)" ( (parameter_declaration "Output_merge_string<char> *this" type_identifier (ERROR "<char>" < primitive_type >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Relobj *object" type_identifier (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) ))) (compound_statement "{\n  uchar *puVar1;\n  _func_int_varargs *p_Var2;\n  pointer pcVar3;\n  pointer ppMVar4;\n  _func_int_varargs **pp_Var5;\n  Key KVar6;\n  Merged_strings_list *pMVar7;\n  char *format;\n  size_t sVar8;\n  undefined4 uVar9;\n  undefined1 uVar10;\n  pointer pMVar11;\n  uint uVar12;\n  uint uVar13;\n  undefined4 extraout_EDX;\n  pointer pMVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  uint *puVar17;\n  uchar *puVar18;\n  Relobj *pRVar19;\n  Merged_strings_list *pMVar20;\n  uint uVar21;\n  pointer pMVar22;\n  undefined1 auStack_80 [4];\n  uint local_7c;\n  uchar *local_78;\n  uint local_74;\n  uchar *local_70;\n  pointer local_6c;\n  Stringpool_template<char> *local_68;\n  uint local_64;\n  Merged_strings_list *local_60;\n  Merged_strings *local_5c;\n  uchar *local_58;\n  undefined **local_54;\n  uchar *local_50;\n  bool is_new;\n  section_size_type sec_len;\n  Merged_strings_list *merged_strings_list;\n  Key key;\n  uint64_t addralign;\n  Merged_strings_list local_34;\n  \n  local_54 = &_GLOBAL_OFFSET_TABLE_;\n  p_Var2 = (this->super_Output_merge_base).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3];\n  if (p_Var2 == Output_section_data::do_addralign) {\n    addralign._4_4_ =\n         *(undefined4 *)\n          ((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4);\n    addralign._0_4_ = (int)(this->super_Output_merge_base).super_Output_section_data.addralign_;\n  }\n  else {\n    addralign._0_4_ = (*p_Var2)(this);\n    addralign._4_4_ = extraout_EDX;\n  }\n  local_78 = Object::decompressed_section_contents\n                       (&object->super_Object,shndx,&sec_len,&is_new,&addralign);\n  local_58 = local_78 + sec_len;\n  puVar17 = &local_7c;\n  if (local_58[-1] == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar15 = (undefined1 *)puVar17;\n  }\n  else {\n    (*(object->super_Object)._vptr_Object[0x10])(&local_34,object,shndx);\n    pRVar19 = local_34.object;\n    pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n    format = (char *)gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    gold_warning(format,pcVar3,pRVar19);\n    if (local_34.object != (Relobj *)&local_34.merged_strings) {\n      operator_delete(local_34.object);\n    }\n    puVar15 = auStack_80;\n    puVar17 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0')) goto LAB_001c8590;\n    do {\n      local_50 = puVar18 + -1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar15 = auStack_80;\n        break;\n      }\n      puVar1 = puVar18 + -2;\n      puVar18 = local_50;\n    } while (*puVar1 != '\0');\n  }\n  *(undefined4 *)(puVar15 + -0x10) = 0x14;\n  *(undefined4 *)(puVar15 + -0x14) = 0x1c8350;\n  merged_strings_list = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));\n  (merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start = (pointer)0x0;\n  merged_strings_list->object = object;\n  (merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish = (pointer)0x0;\n  ppMVar4 = (this->merged_strings_lists_).\n            super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n            ._M_impl._M_finish;\n  merged_strings_list->shndx = shndx;\n  (merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0;\n  if (ppMVar4 ==\n      (this->merged_strings_lists_).\n      super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n      ._M_impl._M_end_of_storage) {\n    *(Merged_strings_list ***)(puVar15 + -8) = &merged_strings_list;\n    *(pointer *)(puVar15 + -0xc) = ppMVar4;\n    *(Merged_strings_lists **)(puVar15 + -0x10) = &this->merged_strings_lists_;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c8696;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ::_M_realloc_insert<gold::Output_merge_string<char>::Merged_strings_list*_const&>\n              (*(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)(puVar15 + -0x10),(iterator)*(Merged_strings_list ***)(puVar15 + -0xc),\n               *(Merged_strings_list ***)(puVar15 + -8));\n  }\n  else {\n    *ppMVar4 = merged_strings_list;\n    (this->merged_strings_lists_).\n    super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ._M_impl._M_finish = ppMVar4 + 1;\n  }\n  local_5c = &merged_strings_list->merged_strings;\n  if (local_78 < local_50) {\n    local_60 = merged_strings_list;\n    uVar21 = 0;\n    puVar18 = local_78;\n    do {\n      *(uchar **)(puVar15 + -0x10) = puVar18;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c83cc;\n      sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      pMVar20 = local_60;\n      uVar12 = uVar21 + 1;\n      if (sVar8 != 0) {\n        uVar12 = uVar21 + 2;\n        uVar21 = uVar21 + 1;\n      }\n      puVar18 = puVar18 + sVar8 + 1;\n    } while (puVar18 < local_50);\n    uVar13 = uVar12;\n    local_7c = uVar21;\n    if (local_50 < local_58) {\n      uVar13 = uVar12 + 1;\n      local_7c = uVar12;\n    }\n    if (0x1fffffff < uVar13) {\n      *(int *)(puVar15 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar15 + -0x14) = &LAB_001c8729;\n      std::__throw_length_error(*(char **)(puVar15 + -0x10));\n    }\n    pMVar11 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n    if (uVar13 <= (uint)((int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;\n    pMVar22 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;\n    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);\n    local_64 = uVar13 * 8;\n    if (uVar13 != 0) goto LAB_001c85d4;\n    local_60 = (Merged_strings_list *)0x0;\n    pMVar7 = local_60;\n    pMVar14 = pMVar11;\n  }\n  else {\n    pMVar11 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n    local_7c = (uint)(local_50 < local_58);\n    uVar21 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar21 <= (uint)((int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;\n    pMVar22 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;\n    local_64 = uVar21 * 8;\n    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);\n    pMVar20 = merged_strings_list;\nLAB_001c85d4:\n    *(uint *)(puVar15 + -0x10) = local_64;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c85e5;\n    local_6c = pMVar11;\n    local_60 = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));\n    pMVar11 = local_6c;\n    pMVar7 = local_60;\n    pMVar14 = (pMVar20->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n  }\n  for (; pMVar11 != pMVar22; pMVar11 = pMVar11 + 1) {\n    KVar6 = pMVar11->stringpool_key;\n    pMVar7->object = (Relobj *)pMVar11->offset;\n    pMVar7->shndx = KVar6;\n    local_6c = pMVar14;\n    pMVar7 = (Merged_strings_list *)&pMVar7->merged_strings;\n  }\n  if (pMVar14 != (pointer)0x0) {\n    *(pointer *)(puVar15 + -0x10) = pMVar14;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c8628;\n    operator_delete(*(void **)(puVar15 + -0x10));\n  }\n  (pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start = (pointer)local_60;\n  (pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish = (pointer)((int)&(local_68->string_set_)._M_h._M_buckets + (int)local_60);\n  (pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage = (pointer)((int)&local_60->object + local_64);\nLAB_001c8419:\n  puVar18 = local_50;\n  local_74 = (int)addralign - 1U & (uint)local_78;\n  puVar16 = puVar15;\n  if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = &this->stringpool_;\n    local_60 = &local_34;\n    local_6c = (pointer)&key;\n    local_50 = local_78;\n    local_70 = puVar18;\n    pRVar19 = (Relobj *)0x0;\n    do {\n      sVar8 = (int)local_58 - (int)local_50;\n      if (local_50 < local_70) {\n        *(uchar **)(puVar15 + -0x10) = local_50;\n        *(undefined4 *)(puVar15 + -0x14) = 0x1c8471;\n        sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      }\n      if (sVar8 != 0) {\n        uVar10 = (char)local_64;\n        if (((int)addralign - 1U & (uint)local_50) != local_74) {\n          uVar10 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar10);\n      }\n      *(pointer *)(puVar15 + -0x10) = local_6c;\n      *(undefined4 *)(puVar15 + -0x14) = 1;\n      *(size_t *)(puVar15 + -0x18) = sVar8;\n      *(uchar **)(puVar15 + -0x1c) = local_50;\n      *(Stringpool_template<char> **)(puVar15 + -0x20) = local_68;\n      *(undefined4 *)(puVar15 + -0x24) = 0x1c84ac;\n      Stringpool_template<char>::add_with_length\n                (*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),\n                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10));\n      *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n      *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n      local_34.shndx = key;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c84c3;\n      local_34.object = pRVar19;\n      std::\n      vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n      ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n                (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n      pMVar20 = local_60;\n      local_50 = local_50 + sVar8 + 1;\n      pRVar19 = (Relobj *)((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1);\n    } while (local_50 < local_58);\n    local_34.shndx = 0;\n    *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n    *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c84ef;\n    local_34.object = pRVar19;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n    this->input_count_ = this->input_count_ + local_7c;\n    this->input_size_ = (size_t)((int)&(pRVar19->super_Object)._vptr_Object + this->input_size_);\n    if ((char)local_64 != '\0') {\n      pp_Var5 = (object->super_Object)._vptr_Object;\n      *(uint *)(puVar15 + -8) = shndx;\n      *(Relobj **)(puVar15 + -0xc) = object;\n      *(Merged_strings_list **)(puVar15 + -0x10) = pMVar20;\n      p_Var2 = pp_Var5[0x10];\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c851c;\n      (*p_Var2)();\n      pRVar19 = local_34.object;\n      pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n      *(undefined ***)(puVar15 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8534;\n      uVar9 = gettext();\n      *(Relobj **)(puVar15 + -0xc) = pRVar19;\n      *(pointer *)(puVar15 + -0x10) = pcVar3;\n      *(undefined4 *)(puVar15 + -0x14) = uVar9;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8544;\n      gold_warning(*(char **)(puVar15 + -0x14));\n      puVar16 = puVar15 + -4;\n      if (local_34.object != (Relobj *)&local_34.merged_strings) {\n        *(Relobj **)(puVar15 + -0x14) = local_34.object;\n        *(undefined4 *)(puVar15 + -0x18) = 0x1c855a;\n        operator_delete(*(void **)(puVar15 + -0x14));\n        puVar16 = puVar15 + -4;\n      }\n    }\n  }\n  else {\n    local_34.object = (Relobj *)0x0;\n    *(Merged_strings_list **)(puVar15 + -0xc) = &local_34;\n    *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n    local_34.shndx = 0;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c86bd;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n    this->input_count_ = this->input_count_ + local_7c;\n  }\n  if ((this->super_Output_merge_base).keeps_input_sections_ != false) {\n    *(uint *)(puVar16 + -8) = shndx;\n    *(Relobj **)(puVar16 + -0xc) = object;\n    *(Output_merge_string<char> **)(puVar16 + -0x10) = this;\n    *(undefined4 *)(puVar16 + -0x14) = 0x1c85af;\n    Output_merge_base::record_input_section\n              (*(Output_merge_base **)(puVar16 + -0x10),*(Relobj **)(puVar16 + -0xc),\n               *(uint *)(puVar16 + -8));\n  }\n  if ((is_new != false) && (local_78 != (uchar *)0x0)) {\n    *(uchar **)(puVar16 + -0x10) = local_78;\n    *(undefined4 *)(puVar16 + -0x14) = 0x1c857f;\n    operator_delete__(*(void **)(puVar16 + -0x10));\n  }\n  return true;\n}" { (declaration "uchar *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "_func_int_varargs *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "pointer pcVar3;" type_identifier identifier ;) (declaration "pointer ppMVar4;" type_identifier identifier ;) (declaration "_func_int_varargs **pp_Var5;" type_identifier (pointer_declarator "**pp_Var5" * (pointer_declarator "*pp_Var5" * identifier)) ;) (declaration "Key KVar6;" type_identifier identifier ;) (declaration "Merged_strings_list *pMVar7;" type_identifier (pointer_declarator "*pMVar7" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined1 uVar10;" type_identifier identifier ;) (declaration "pointer pMVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "pointer pMVar14;" type_identifier identifier ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uchar *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "Relobj *pRVar19;" type_identifier (pointer_declarator "*pRVar19" * identifier) ;) (declaration "Merged_strings_list *pMVar20;" type_identifier (pointer_declarator "*pMVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "pointer pMVar22;" type_identifier identifier ;) (declaration "undefined1 auStack_80 [4];" type_identifier (array_declarator "auStack_80 [4]" identifier [ number_literal ]) ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "uchar *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "uint local_74;" type_identifier identifier ;) (declaration "uchar *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "pointer local_6c;" type_identifier identifier ;) (expression_statement "Stringpool_template<char> *local_68;" (binary_expression "Stringpool_template<char> *local_68" (binary_expression "Stringpool_template<char" identifier < identifier) > (pointer_expression "*local_68" * identifier)) ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "Merged_strings_list *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "Merged_strings *local_5c;" type_identifier (pointer_declarator "*local_5c" * identifier) ;) (declaration "uchar *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined **local_54;" type_identifier (pointer_declarator "**local_54" * (pointer_declarator "*local_54" * identifier)) ;) (declaration "uchar *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "bool is_new;" primitive_type identifier ;) (declaration "section_size_type sec_len;" type_identifier identifier ;) (declaration "Merged_strings_list *merged_strings_list;" type_identifier (pointer_declarator "*merged_strings_list" * identifier) ;) (declaration "Key key;" type_identifier identifier ;) (declaration "uint64_t addralign;" primitive_type identifier ;) (declaration "Merged_strings_list local_34;" type_identifier identifier ;) (expression_statement "local_54 = &_GLOBAL_OFFSET_TABLE_;" (assignment_expression "local_54 = &_GLOBAL_OFFSET_TABLE_" identifier = (pointer_expression "&_GLOBAL_OFFSET_TABLE_" & identifier)) ;) (expression_statement "p_Var2 = (this->super_Output_merge_base).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3];" (assignment_expression "p_Var2 = (this->super_Output_merge_base).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3]" identifier = (subscript_expression "(this->super_Output_merge_base).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3]" (field_expression "(this->super_Output_merge_base).super_Output_section_data.super_Output_data.\n           _vptr_Output_data" (field_expression "(this->super_Output_merge_base).super_Output_section_data.super_Output_data" (field_expression "(this->super_Output_merge_base).super_Output_section_data" (parenthesized_expression "(this->super_Output_merge_base)" ( (field_expression "this->super_Output_merge_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var2 == Output_section_data::do_addralign) {\n    addralign._4_4_ =\n         *(undefined4 *)\n          ((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4);\n    addralign._0_4_ = (int)(this->super_Output_merge_base).super_Output_section_data.addralign_;\n  }\n  else {\n    addralign._0_4_ = (*p_Var2)(this);\n    addralign._4_4_ = extraout_EDX;\n  }" if (parenthesized_expression "(p_Var2 == Output_section_data::do_addralign)" ( (binary_expression "p_Var2 == Output_section_data" identifier == identifier) (ERROR "::do_addralign" : : identifier) )) (compound_statement "{\n    addralign._4_4_ =\n         *(undefined4 *)\n          ((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4);\n    addralign._0_4_ = (int)(this->super_Output_merge_base).super_Output_section_data.addralign_;\n  }" { (expression_statement "addralign._4_4_ =\n         *(undefined4 *)\n          ((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4);" (assignment_expression "addralign._4_4_ =\n         *(undefined4 *)\n          ((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4)" (field_expression "addralign._4_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)\n          ((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4)" * (cast_expression "(undefined4 *)\n          ((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4)" ( (binary_expression "(int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4" (cast_expression "(int)&(this->super_Output_merge_base).super_Output_section_data.addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_merge_base).super_Output_section_data.addralign_" & (field_expression "(this->super_Output_merge_base).super_Output_section_data.addralign_" (field_expression "(this->super_Output_merge_base).super_Output_section_data" (parenthesized_expression "(this->super_Output_merge_base)" ( (field_expression "this->super_Output_merge_base" identifier -> field_identifier) )) . field_identifier) . field_identifier))) + number_literal) ))))) ;) (expression_statement "addralign._0_4_ = (int)(this->super_Output_merge_base).super_Output_section_data.addralign_;" (assignment_expression "addralign._0_4_ = (int)(this->super_Output_merge_base).super_Output_section_data.addralign_" (field_expression "addralign._0_4_" identifier . field_identifier) = (cast_expression "(int)(this->super_Output_merge_base).super_Output_section_data.addralign_" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->super_Output_merge_base).super_Output_section_data.addralign_" (field_expression "(this->super_Output_merge_base).super_Output_section_data" (parenthesized_expression "(this->super_Output_merge_base)" ( (field_expression "this->super_Output_merge_base" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) }) (else_clause "else {\n    addralign._0_4_ = (*p_Var2)(this);\n    addralign._4_4_ = extraout_EDX;\n  }" else (compound_statement "{\n    addralign._0_4_ = (*p_Var2)(this);\n    addralign._4_4_ = extraout_EDX;\n  }" { (expression_statement "addralign._0_4_ = (*p_Var2)(this);" (assignment_expression "addralign._0_4_ = (*p_Var2)(this)" (field_expression "addralign._0_4_" identifier . field_identifier) = (call_expression "(*p_Var2)(this)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(this)" ( identifier )))) ;) (expression_statement "addralign._4_4_ = extraout_EDX;" (assignment_expression "addralign._4_4_ = extraout_EDX" (field_expression "addralign._4_4_" identifier . field_identifier) = identifier) ;) }))) (ERROR "local_78 = Object::" (assignment_expression "local_78 = Object" identifier = identifier) : :) (expression_statement "decompressed_section_contents\n                       (&object->super_Object,shndx,&sec_len,&is_new,&addralign);" (call_expression "decompressed_section_contents\n                       (&object->super_Object,shndx,&sec_len,&is_new,&addralign)" identifier (argument_list "(&object->super_Object,shndx,&sec_len,&is_new,&addralign)" ( (pointer_expression "&object->super_Object" & (field_expression "object->super_Object" identifier -> field_identifier)) , identifier , (pointer_expression "&sec_len" & identifier) , (pointer_expression "&is_new" & identifier) , (pointer_expression "&addralign" & identifier) ))) ;) (expression_statement "local_58 = local_78 + sec_len;" (assignment_expression "local_58 = local_78 + sec_len" identifier = (binary_expression "local_78 + sec_len" identifier + identifier)) ;) (expression_statement "puVar17 = &local_7c;" (assignment_expression "puVar17 = &local_7c" identifier = (pointer_expression "&local_7c" & identifier)) ;) (if_statement "if (local_58[-1] == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar15 = (undefined1 *)puVar17;\n  }\n  else {\n    (*(object->super_Object)._vptr_Object[0x10])(&local_34,object,shndx);\n    pRVar19 = local_34.object;\n    pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n    format = (char *)gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    gold_warning(format,pcVar3,pRVar19);\n    if (local_34.object != (Relobj *)&local_34.merged_strings) {\n      operator_delete(local_34.object);\n    }\n    puVar15 = auStack_80;\n    puVar17 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0')) goto LAB_001c8590;\n    do {\n      local_50 = puVar18 + -1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar15 = auStack_80;\n        break;\n      }\n      puVar1 = puVar18 + -2;\n      puVar18 = local_50;\n    } while (*puVar1 != '\0');\n  }" if (parenthesized_expression "(local_58[-1] == '\0')" ( (binary_expression "local_58[-1] == '\0'" (subscript_expression "local_58[-1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_001c8590:\n    local_50 = local_58;\n    puVar15 = (undefined1 *)puVar17;\n  }" { (labeled_statement "LAB_001c8590:\n    local_50 = local_58;" statement_identifier : (expression_statement "local_50 = local_58;" (assignment_expression "local_50 = local_58" identifier = identifier) ;)) (expression_statement "puVar15 = (undefined1 *)puVar17;" (assignment_expression "puVar15 = (undefined1 *)puVar17" identifier = (cast_expression "(undefined1 *)puVar17" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n    (*(object->super_Object)._vptr_Object[0x10])(&local_34,object,shndx);\n    pRVar19 = local_34.object;\n    pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n    format = (char *)gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    gold_warning(format,pcVar3,pRVar19);\n    if (local_34.object != (Relobj *)&local_34.merged_strings) {\n      operator_delete(local_34.object);\n    }\n    puVar15 = auStack_80;\n    puVar17 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0')) goto LAB_001c8590;\n    do {\n      local_50 = puVar18 + -1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar15 = auStack_80;\n        break;\n      }\n      puVar1 = puVar18 + -2;\n      puVar18 = local_50;\n    } while (*puVar1 != '\0');\n  }" else (compound_statement "{\n    (*(object->super_Object)._vptr_Object[0x10])(&local_34,object,shndx);\n    pRVar19 = local_34.object;\n    pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n    format = (char *)gettext(local_54 + -0x3bc00);\n                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */\n    gold_warning(format,pcVar3,pRVar19);\n    if (local_34.object != (Relobj *)&local_34.merged_strings) {\n      operator_delete(local_34.object);\n    }\n    puVar15 = auStack_80;\n    puVar17 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0')) goto LAB_001c8590;\n    do {\n      local_50 = puVar18 + -1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar15 = auStack_80;\n        break;\n      }\n      puVar1 = puVar18 + -2;\n      puVar18 = local_50;\n    } while (*puVar1 != '\0');\n  }" { (expression_statement "(*(object->super_Object)._vptr_Object[0x10])(&local_34,object,shndx);" (call_expression "(*(object->super_Object)._vptr_Object[0x10])(&local_34,object,shndx)" (parenthesized_expression "(*(object->super_Object)._vptr_Object[0x10])" ( (pointer_expression "*(object->super_Object)._vptr_Object[0x10]" * (subscript_expression "(object->super_Object)._vptr_Object[0x10]" (field_expression "(object->super_Object)._vptr_Object" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(&local_34,object,shndx)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier ))) ;) (expression_statement "pRVar19 = local_34.object;" (assignment_expression "pRVar19 = local_34.object" identifier = (field_expression "local_34.object" identifier . field_identifier)) ;) (expression_statement "pcVar3 = (object->super_Object).name_._M_dataplus._M_p;" (assignment_expression "pcVar3 = (object->super_Object).name_._M_dataplus._M_p" identifier = (field_expression "(object->super_Object).name_._M_dataplus._M_p" (field_expression "(object->super_Object).name_._M_dataplus" (field_expression "(object->super_Object).name_" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "format = (char *)gettext(local_54 + -0x3bc00);" (assignment_expression "format = (char *)gettext(local_54 + -0x3bc00)" identifier = (cast_expression "(char *)gettext(local_54 + -0x3bc00)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(local_54 + -0x3bc00)" identifier (argument_list "(local_54 + -0x3bc00)" ( (binary_expression "local_54 + -0x3bc00" identifier + number_literal) ))))) ;) comment (expression_statement "gold_warning(format,pcVar3,pRVar19);" (call_expression "gold_warning(format,pcVar3,pRVar19)" identifier (argument_list "(format,pcVar3,pRVar19)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_34.object != (Relobj *)&local_34.merged_strings) {\n      operator_delete(local_34.object);\n    }" if (parenthesized_expression "(local_34.object != (Relobj *)&local_34.merged_strings)" ( (binary_expression "local_34.object != (Relobj *)&local_34.merged_strings" (field_expression "local_34.object" identifier . field_identifier) != (cast_expression "(Relobj *)&local_34.merged_strings" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34.merged_strings" & (field_expression "local_34.merged_strings" identifier . field_identifier)))) )) (compound_statement "{\n      operator_delete(local_34.object);\n    }" { (expression_statement "operator_delete(local_34.object);" (call_expression "operator_delete(local_34.object)" identifier (argument_list "(local_34.object)" ( (field_expression "local_34.object" identifier . field_identifier) ))) ;) })) (expression_statement "puVar15 = auStack_80;" (assignment_expression "puVar15 = auStack_80" identifier = identifier) ;) (expression_statement "puVar17 = (uint *)auStack_80;" (assignment_expression "puVar17 = (uint *)auStack_80" identifier = (cast_expression "(uint *)auStack_80" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((local_58 <= local_78) ||\n       (puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0')) goto LAB_001c8590;" if (parenthesized_expression "((local_58 <= local_78) ||\n       (puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0'))" ( (binary_expression "(local_58 <= local_78) ||\n       (puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0')" (parenthesized_expression "(local_58 <= local_78)" ( (binary_expression "local_58 <= local_78" identifier <= identifier) )) || (parenthesized_expression "(puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0')" ( (comma_expression "puVar17 = (uint *)auStack_80, puVar18 = local_58, local_58[-1] == '\0'" (assignment_expression "puVar17 = (uint *)auStack_80" identifier = (cast_expression "(uint *)auStack_80" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (comma_expression "puVar18 = local_58, local_58[-1] == '\0'" (assignment_expression "puVar18 = local_58" identifier = identifier) , (binary_expression "local_58[-1] == '\0'" (subscript_expression "local_58[-1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')))) ))) )) (goto_statement "goto LAB_001c8590;" goto statement_identifier ;)) (do_statement "do {\n      local_50 = puVar18 + -1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar15 = auStack_80;\n        break;\n      }\n      puVar1 = puVar18 + -2;\n      puVar18 = local_50;\n    } while (*puVar1 != '\0');" do (compound_statement "{\n      local_50 = puVar18 + -1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar15 = auStack_80;\n        break;\n      }\n      puVar1 = puVar18 + -2;\n      puVar18 = local_50;\n    }" { (expression_statement "local_50 = puVar18 + -1;" (assignment_expression "local_50 = puVar18 + -1" identifier = (binary_expression "puVar18 + -1" identifier + number_literal)) ;) (if_statement "if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar15 = auStack_80;\n        break;\n      }" if (parenthesized_expression "(local_78 == local_50)" ( (binary_expression "local_78 == local_50" identifier == identifier) )) (compound_statement "{\n        local_50 = local_78;\n        puVar15 = auStack_80;\n        break;\n      }" { (expression_statement "local_50 = local_78;" (assignment_expression "local_50 = local_78" identifier = identifier) ;) (expression_statement "puVar15 = auStack_80;" (assignment_expression "puVar15 = auStack_80" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "puVar1 = puVar18 + -2;" (assignment_expression "puVar1 = puVar18 + -2" identifier = (binary_expression "puVar18 + -2" identifier + number_literal)) ;) (expression_statement "puVar18 = local_50;" (assignment_expression "puVar18 = local_50" identifier = identifier) ;) }) while (parenthesized_expression "(*puVar1 != '\0')" ( (binary_expression "*puVar1 != '\0'" (pointer_expression "*puVar1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) ;) }))) (expression_statement "*(undefined4 *)(puVar15 + -0x10) = 0x14;" (assignment_expression "*(undefined4 *)(puVar15 + -0x10) = 0x14" (pointer_expression "*(undefined4 *)(puVar15 + -0x10)" * (cast_expression "(undefined4 *)(puVar15 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x1c8350;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x1c8350" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "merged_strings_list = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));" (assignment_expression "merged_strings_list = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10))" identifier = (cast_expression "(Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10))" ( (type_descriptor "Merged_strings_list *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(*(uint *)(puVar15 + -0x10))" identifier (argument_list "(*(uint *)(puVar15 + -0x10))" ( (pointer_expression "*(uint *)(puVar15 + -0x10)" * (cast_expression "(uint *)(puVar15 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) ))))) ;) (ERROR "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (comma_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std" (binary_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char" (binary_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold" (field_expression "(merged_strings_list->merged_strings).\n  super__Vector_base" (parenthesized_expression "(merged_strings_list->merged_strings)" ( (field_expression "merged_strings_list->merged_strings" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start = (pointer)0x0;" (assignment_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start = (pointer)0x0" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "merged_strings_list->object = object;" (assignment_expression "merged_strings_list->object = object" (field_expression "merged_strings_list->object" identifier -> field_identifier) = identifier) ;) (ERROR "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (comma_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std" (binary_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char" (binary_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold" (field_expression "(merged_strings_list->merged_strings).\n  super__Vector_base" (parenthesized_expression "(merged_strings_list->merged_strings)" ( (field_expression "merged_strings_list->merged_strings" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish = (pointer)0x0;" (assignment_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish = (pointer)0x0" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "ppMVar4 = (this->merged_strings_lists_).\n            super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::" (comma_expression "ppMVar4 = (this->merged_strings_lists_).\n            super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std" (binary_expression "ppMVar4 = (this->merged_strings_lists_).\n            super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list" (binary_expression "ppMVar4 = (this->merged_strings_lists_).\n            super__Vector_base<gold::Output_merge_string<char" (assignment_expression "ppMVar4 = (this->merged_strings_lists_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->merged_strings_lists_).\n            super__Vector_base<gold" (field_expression "(this->merged_strings_lists_).\n            super__Vector_base" (parenthesized_expression "(this->merged_strings_lists_)" ( (field_expression "this->merged_strings_lists_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) (ERROR "*" *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_strings_list*>_>\n            ._M_impl._M_finish;" (field_expression "Output_merge_string<char>::Merged_strings_list*>_>\n            ._M_impl._M_finish" (field_expression "Output_merge_string<char>::Merged_strings_list*>_>\n            ._M_impl" (binary_expression "Output_merge_string<char>::Merged_strings_list*>_" (binary_expression "Output_merge_string<char>::Merged_strings_list" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) (ERROR "*" *) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "merged_strings_list->shndx = shndx;" (assignment_expression "merged_strings_list->shndx = shndx" (field_expression "merged_strings_list->shndx" identifier -> field_identifier) = identifier) ;) (ERROR "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (comma_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std" (binary_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char" (binary_expression "(merged_strings_list->merged_strings).\n  super__Vector_base<gold" (field_expression "(merged_strings_list->merged_strings).\n  super__Vector_base" (parenthesized_expression "(merged_strings_list->merged_strings)" ( (field_expression "merged_strings_list->merged_strings" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0;" (assignment_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (if_statement "if (ppMVar4 ==\n      (this->merged_strings_lists_).\n      super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n      ._M_impl._M_end_of_storage) {\n    *(Merged_strings_list ***)(puVar15 + -8) = &merged_strings_list;\n    *(pointer *)(puVar15 + -0xc) = ppMVar4;\n    *(Merged_strings_lists **)(puVar15 + -0x10) = &this->merged_strings_lists_;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c8696;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ::_M_realloc_insert<gold::Output_merge_string<char>::Merged_strings_list*_const&>\n              (*(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)(puVar15 + -0x10),(iterator)*(Merged_strings_list ***)(puVar15 + -0xc),\n               *(Merged_strings_list ***)(puVar15 + -8));\n  }\n  else {\n    *ppMVar4 = merged_strings_list;\n    (this->merged_strings_lists_).\n    super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ._M_impl._M_finish = ppMVar4 + 1;\n  }" if (parenthesized_expression "(ppMVar4 ==\n      (this->merged_strings_lists_).\n      super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n      ._M_impl._M_end_of_storage)" ( (ERROR "ppMVar4 ==\n      (this->merged_strings_lists_).\n      super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::" (comma_expression "ppMVar4 ==\n      (this->merged_strings_lists_).\n      super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std" (binary_expression "ppMVar4 ==\n      (this->merged_strings_lists_).\n      super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list" (binary_expression "ppMVar4 ==\n      (this->merged_strings_lists_).\n      super__Vector_base<gold::Output_merge_string<char" (binary_expression "ppMVar4 ==\n      (this->merged_strings_lists_).\n      super__Vector_base<gold" identifier == (binary_expression "(this->merged_strings_lists_).\n      super__Vector_base<gold" (field_expression "(this->merged_strings_lists_).\n      super__Vector_base" (parenthesized_expression "(this->merged_strings_lists_)" ( (field_expression "this->merged_strings_lists_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) (ERROR "*" *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (field_expression "Output_merge_string<char>::Merged_strings_list*>_>\n      ._M_impl._M_end_of_storage" (field_expression "Output_merge_string<char>::Merged_strings_list*>_>\n      ._M_impl" (binary_expression "Output_merge_string<char>::Merged_strings_list*>_" (binary_expression "Output_merge_string<char>::Merged_strings_list" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) (ERROR "*" *) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    *(Merged_strings_list ***)(puVar15 + -8) = &merged_strings_list;\n    *(pointer *)(puVar15 + -0xc) = ppMVar4;\n    *(Merged_strings_lists **)(puVar15 + -0x10) = &this->merged_strings_lists_;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c8696;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ::_M_realloc_insert<gold::Output_merge_string<char>::Merged_strings_list*_const&>\n              (*(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)(puVar15 + -0x10),(iterator)*(Merged_strings_list ***)(puVar15 + -0xc),\n               *(Merged_strings_list ***)(puVar15 + -8));\n  }" { (expression_statement "*(Merged_strings_list ***)(puVar15 + -8) = &merged_strings_list;" (assignment_expression "*(Merged_strings_list ***)(puVar15 + -8) = &merged_strings_list" (pointer_expression "*(Merged_strings_list ***)(puVar15 + -8)" * (cast_expression "(Merged_strings_list ***)(puVar15 + -8)" ( (type_descriptor "Merged_strings_list ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar15 + -8)" ( (binary_expression "puVar15 + -8" identifier + number_literal) )))) = (pointer_expression "&merged_strings_list" & identifier)) ;) (expression_statement "*(pointer *)(puVar15 + -0xc) = ppMVar4;" (assignment_expression "*(pointer *)(puVar15 + -0xc) = ppMVar4" (pointer_expression "*(pointer *)(puVar15 + -0xc)" * (cast_expression "(pointer *)(puVar15 + -0xc)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(Merged_strings_lists **)(puVar15 + -0x10) = &this->merged_strings_lists_;" (assignment_expression "*(Merged_strings_lists **)(puVar15 + -0x10) = &this->merged_strings_lists_" (pointer_expression "*(Merged_strings_lists **)(puVar15 + -0x10)" * (cast_expression "(Merged_strings_lists **)(puVar15 + -0x10)" ( (type_descriptor "Merged_strings_lists **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = (pointer_expression "&this->merged_strings_lists_" & (field_expression "this->merged_strings_lists_" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x1c8696;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x1c8696" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (ERROR "std::\n    vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ::_M_realloc_insert<gold::" (comma_expression "std::\n    vector<gold::Output_merge_string<char>::Merged_strings_list*,_std" identifier (ERROR "::\n    vector<gold::Output_merge_string<char>::Merged_strings_list*" : : (binary_expression "vector<gold" identifier < identifier) : : (binary_expression "Output_merge_string<char" identifier < identifier) > : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Output_merge_string<char>::Merged_strings_list*>_>\n    ::_M_realloc_insert<gold" (binary_expression "Output_merge_string<char>::Merged_strings_list*>_>\n    ::_M_realloc_insert" (binary_expression "Output_merge_string<char>::Merged_strings_list*>_" (binary_expression "Output_merge_string<char>::Merged_strings_list" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) (ERROR "*" *) > identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_strings_list*_const&>\n              (*(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)(puVar15 + -0x10),(iterator)*(Merged_strings_list ***)(puVar15 + -0xc),\n               *(Merged_strings_list ***)(puVar15 + -8));" (binary_expression "Output_merge_string<char>::Merged_strings_list*_const&>\n              (*(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)(puVar15 + -0x10),(iterator)*(Merged_strings_list ***)(puVar15 + -0xc),\n               *(Merged_strings_list ***)(puVar15 + -8))" (binary_expression "Output_merge_string<char>::Merged_strings_list*_const" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) (binary_expression "Merged_strings_list*_const" identifier * identifier)) (ERROR "&" &) > (parenthesized_expression "(*(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)(puVar15 + -0x10),(iterator)*(Merged_strings_list ***)(puVar15 + -0xc),\n               *(Merged_strings_list ***)(puVar15 + -8))" ( (comma_expression "*(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)(puVar15 + -0x10),(iterator)*(Merged_strings_list ***)(puVar15 + -0xc),\n               *(Merged_strings_list ***)(puVar15 + -8)" (pointer_expression "*(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)(puVar15 + -0x10)" * (call_expression "(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)(puVar15 + -0x10)" (parenthesized_expression "(vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n                 **)" ( (ERROR "vector<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::" (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Output_merge_string<char>::Merged_strings_list*,_std" (binary_expression "Output_merge_string<char>::Merged_strings_list" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) (ERROR "*" *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_merge_string<char>::Merged_strings_list*>_>\n                 **" (binary_expression "Output_merge_string<char>::Merged_strings_list*>_" (binary_expression "Output_merge_string<char>::Merged_strings_list" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) (ERROR "*" *) > identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) , (comma_expression "(iterator)*(Merged_strings_list ***)(puVar15 + -0xc),\n               *(Merged_strings_list ***)(puVar15 + -8)" (binary_expression "(iterator)*(Merged_strings_list ***)(puVar15 + -0xc)" (parenthesized_expression "(iterator)" ( identifier )) * (cast_expression "(Merged_strings_list ***)(puVar15 + -0xc)" ( (type_descriptor "Merged_strings_list ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(Merged_strings_list ***)(puVar15 + -8)" * (cast_expression "(Merged_strings_list ***)(puVar15 + -8)" ( (type_descriptor "Merged_strings_list ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar15 + -8)" ( (binary_expression "puVar15 + -8" identifier + number_literal) )))))) ))) ;) }) (else_clause "else {\n    *ppMVar4 = merged_strings_list;\n    (this->merged_strings_lists_).\n    super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ._M_impl._M_finish = ppMVar4 + 1;\n  }" else (compound_statement "{\n    *ppMVar4 = merged_strings_list;\n    (this->merged_strings_lists_).\n    super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::Output_merge_string<char>::Merged_strings_list*>_>\n    ._M_impl._M_finish = ppMVar4 + 1;\n  }" { (expression_statement "*ppMVar4 = merged_strings_list;" (assignment_expression "*ppMVar4 = merged_strings_list" (pointer_expression "*ppMVar4" * identifier) = identifier) ;) (ERROR "(this->merged_strings_lists_).\n    super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std::allocator<gold::" (comma_expression "(this->merged_strings_lists_).\n    super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list*,_std" (binary_expression "(this->merged_strings_lists_).\n    super__Vector_base<gold::Output_merge_string<char>::Merged_strings_list" (binary_expression "(this->merged_strings_lists_).\n    super__Vector_base<gold::Output_merge_string<char" (binary_expression "(this->merged_strings_lists_).\n    super__Vector_base<gold" (field_expression "(this->merged_strings_lists_).\n    super__Vector_base" (parenthesized_expression "(this->merged_strings_lists_)" ( (field_expression "this->merged_strings_lists_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) (ERROR "*" *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_strings_list*>_>\n    ._M_impl._M_finish = ppMVar4 + 1;" (assignment_expression "Output_merge_string<char>::Merged_strings_list*>_>\n    ._M_impl._M_finish = ppMVar4 + 1" (field_expression "Output_merge_string<char>::Merged_strings_list*>_>\n    ._M_impl._M_finish" (field_expression "Output_merge_string<char>::Merged_strings_list*>_>\n    ._M_impl" (binary_expression "Output_merge_string<char>::Merged_strings_list*>_" (binary_expression "Output_merge_string<char>::Merged_strings_list" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) (ERROR "*" *) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "ppMVar4 + 1" identifier + number_literal)) ;) }))) (expression_statement "local_5c = &merged_strings_list->merged_strings;" (assignment_expression "local_5c = &merged_strings_list->merged_strings" identifier = (pointer_expression "&merged_strings_list->merged_strings" & (field_expression "merged_strings_list->merged_strings" identifier -> field_identifier))) ;) (if_statement "if (local_78 < local_50) {\n    local_60 = merged_strings_list;\n    uVar21 = 0;\n    puVar18 = local_78;\n    do {\n      *(uchar **)(puVar15 + -0x10) = puVar18;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c83cc;\n      sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      pMVar20 = local_60;\n      uVar12 = uVar21 + 1;\n      if (sVar8 != 0) {\n        uVar12 = uVar21 + 2;\n        uVar21 = uVar21 + 1;\n      }\n      puVar18 = puVar18 + sVar8 + 1;\n    } while (puVar18 < local_50);\n    uVar13 = uVar12;\n    local_7c = uVar21;\n    if (local_50 < local_58) {\n      uVar13 = uVar12 + 1;\n      local_7c = uVar12;\n    }\n    if (0x1fffffff < uVar13) {\n      *(int *)(puVar15 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar15 + -0x14) = &LAB_001c8729;\n      std::__throw_length_error(*(char **)(puVar15 + -0x10));\n    }\n    pMVar11 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n    if (uVar13 <= (uint)((int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;\n    pMVar22 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;\n    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);\n    local_64 = uVar13 * 8;\n    if (uVar13 != 0) goto LAB_001c85d4;\n    local_60 = (Merged_strings_list *)0x0;\n    pMVar7 = local_60;\n    pMVar14 = pMVar11;\n  }\n  else {\n    pMVar11 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n    local_7c = (uint)(local_50 < local_58);\n    uVar21 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar21 <= (uint)((int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;\n    pMVar22 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;\n    local_64 = uVar21 * 8;\n    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);\n    pMVar20 = merged_strings_list;\nLAB_001c85d4:\n    *(uint *)(puVar15 + -0x10) = local_64;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c85e5;\n    local_6c = pMVar11;\n    local_60 = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));\n    pMVar11 = local_6c;\n    pMVar7 = local_60;\n    pMVar14 = (pMVar20->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n  }" if (parenthesized_expression "(local_78 < local_50)" ( (binary_expression "local_78 < local_50" identifier < identifier) )) (compound_statement "{\n    local_60 = merged_strings_list;\n    uVar21 = 0;\n    puVar18 = local_78;\n    do {\n      *(uchar **)(puVar15 + -0x10) = puVar18;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c83cc;\n      sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      pMVar20 = local_60;\n      uVar12 = uVar21 + 1;\n      if (sVar8 != 0) {\n        uVar12 = uVar21 + 2;\n        uVar21 = uVar21 + 1;\n      }\n      puVar18 = puVar18 + sVar8 + 1;\n    } while (puVar18 < local_50);\n    uVar13 = uVar12;\n    local_7c = uVar21;\n    if (local_50 < local_58) {\n      uVar13 = uVar12 + 1;\n      local_7c = uVar12;\n    }\n    if (0x1fffffff < uVar13) {\n      *(int *)(puVar15 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar15 + -0x14) = &LAB_001c8729;\n      std::__throw_length_error(*(char **)(puVar15 + -0x10));\n    }\n    pMVar11 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n    if (uVar13 <= (uint)((int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;\n    pMVar22 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;\n    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);\n    local_64 = uVar13 * 8;\n    if (uVar13 != 0) goto LAB_001c85d4;\n    local_60 = (Merged_strings_list *)0x0;\n    pMVar7 = local_60;\n    pMVar14 = pMVar11;\n  }" { (expression_statement "local_60 = merged_strings_list;" (assignment_expression "local_60 = merged_strings_list" identifier = identifier) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "puVar18 = local_78;" (assignment_expression "puVar18 = local_78" identifier = identifier) ;) (do_statement "do {\n      *(uchar **)(puVar15 + -0x10) = puVar18;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c83cc;\n      sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      pMVar20 = local_60;\n      uVar12 = uVar21 + 1;\n      if (sVar8 != 0) {\n        uVar12 = uVar21 + 2;\n        uVar21 = uVar21 + 1;\n      }\n      puVar18 = puVar18 + sVar8 + 1;\n    } while (puVar18 < local_50);" do (compound_statement "{\n      *(uchar **)(puVar15 + -0x10) = puVar18;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c83cc;\n      sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      pMVar20 = local_60;\n      uVar12 = uVar21 + 1;\n      if (sVar8 != 0) {\n        uVar12 = uVar21 + 2;\n        uVar21 = uVar21 + 1;\n      }\n      puVar18 = puVar18 + sVar8 + 1;\n    }" { (expression_statement "*(uchar **)(puVar15 + -0x10) = puVar18;" (assignment_expression "*(uchar **)(puVar15 + -0x10) = puVar18" (pointer_expression "*(uchar **)(puVar15 + -0x10)" * (cast_expression "(uchar **)(puVar15 + -0x10)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x1c83cc;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x1c83cc" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "sVar8 = strlen(*(char **)(puVar15 + -0x10));" (assignment_expression "sVar8 = strlen(*(char **)(puVar15 + -0x10))" identifier = (call_expression "strlen(*(char **)(puVar15 + -0x10))" identifier (argument_list "(*(char **)(puVar15 + -0x10))" ( (pointer_expression "*(char **)(puVar15 + -0x10)" * (cast_expression "(char **)(puVar15 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "pMVar20 = local_60;" (assignment_expression "pMVar20 = local_60" identifier = identifier) ;) (expression_statement "uVar12 = uVar21 + 1;" (assignment_expression "uVar12 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (if_statement "if (sVar8 != 0) {\n        uVar12 = uVar21 + 2;\n        uVar21 = uVar21 + 1;\n      }" if (parenthesized_expression "(sVar8 != 0)" ( (binary_expression "sVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar12 = uVar21 + 2;\n        uVar21 = uVar21 + 1;\n      }" { (expression_statement "uVar12 = uVar21 + 2;" (assignment_expression "uVar12 = uVar21 + 2" identifier = (binary_expression "uVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar18 = puVar18 + sVar8 + 1;" (assignment_expression "puVar18 = puVar18 + sVar8 + 1" identifier = (binary_expression "puVar18 + sVar8 + 1" (binary_expression "puVar18 + sVar8" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(puVar18 < local_50)" ( (binary_expression "puVar18 < local_50" identifier < identifier) )) ;) (expression_statement "uVar13 = uVar12;" (assignment_expression "uVar13 = uVar12" identifier = identifier) ;) (expression_statement "local_7c = uVar21;" (assignment_expression "local_7c = uVar21" identifier = identifier) ;) (if_statement "if (local_50 < local_58) {\n      uVar13 = uVar12 + 1;\n      local_7c = uVar12;\n    }" if (parenthesized_expression "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) )) (compound_statement "{\n      uVar13 = uVar12 + 1;\n      local_7c = uVar12;\n    }" { (expression_statement "uVar13 = uVar12 + 1;" (assignment_expression "uVar13 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "local_7c = uVar12;" (assignment_expression "local_7c = uVar12" identifier = identifier) ;) })) (if_statement "if (0x1fffffff < uVar13) {\n      *(int *)(puVar15 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar15 + -0x14) = &LAB_001c8729;\n      std::__throw_length_error(*(char **)(puVar15 + -0x10));\n    }" if (parenthesized_expression "(0x1fffffff < uVar13)" ( (binary_expression "0x1fffffff < uVar13" number_literal < identifier) )) (compound_statement "{\n      *(int *)(puVar15 + -0x10) = (int)local_54 + -0x10ea7d;\n                    /* WARNING: Subroutine does not return */\n      *(undefined1 **)(puVar15 + -0x14) = &LAB_001c8729;\n      std::__throw_length_error(*(char **)(puVar15 + -0x10));\n    }" { (expression_statement "*(int *)(puVar15 + -0x10) = (int)local_54 + -0x10ea7d;" (assignment_expression "*(int *)(puVar15 + -0x10) = (int)local_54 + -0x10ea7d" (pointer_expression "*(int *)(puVar15 + -0x10)" * (cast_expression "(int *)(puVar15 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = (binary_expression "(int)local_54 + -0x10ea7d" (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) comment (expression_statement "*(undefined1 **)(puVar15 + -0x14) = &LAB_001c8729;" (assignment_expression "*(undefined1 **)(puVar15 + -0x14) = &LAB_001c8729" (pointer_expression "*(undefined1 **)(puVar15 + -0x14)" * (cast_expression "(undefined1 **)(puVar15 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = (pointer_expression "&LAB_001c8729" & identifier)) ;) (labeled_statement "std::__throw_length_error(*(char **)(puVar15 + -0x10));" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error(*(char **)(puVar15 + -0x10));" (call_expression "__throw_length_error(*(char **)(puVar15 + -0x10))" identifier (argument_list "(*(char **)(puVar15 + -0x10))" ( (pointer_expression "*(char **)(puVar15 + -0x10)" * (cast_expression "(char **)(puVar15 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) ))) ;)) })) (ERROR "pMVar11 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (comma_expression "pMVar11 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std" (binary_expression "pMVar11 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "pMVar11 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char" (assignment_expression "pMVar11 = (local_60->merged_strings).\n              super__Vector_base<gold" identifier = (binary_expression "(local_60->merged_strings).\n              super__Vector_base<gold" (field_expression "(local_60->merged_strings).\n              super__Vector_base" (parenthesized_expression "(local_60->merged_strings)" ( (field_expression "local_60->merged_strings" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;" (field_expression "Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start" (field_expression "Output_merge_string<char>::Merged_string>_>\n              ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (uVar13 <= (uint)((int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;" if (parenthesized_expression "(uVar13 <= (uint)((int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3))" ( (binary_expression "uVar13 <= (uint)((int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)" identifier <= (call_expression "(uint)((int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)" ( (binary_expression "(int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "(int)(local_60->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char" (binary_expression "(int)(local_60->merged_strings).\n                              super__Vector_base<gold" (cast_expression "(int)(local_60->merged_strings).\n                              super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(local_60->merged_strings).\n                              super__Vector_base" (parenthesized_expression "(local_60->merged_strings)" ( (field_expression "local_60->merged_strings" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , (ERROR "_std::allocator<gold::" identifier : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3" (binary_expression "Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11" (field_expression "Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage" (field_expression "Output_merge_string<char>::Merged_string>_>\n                              ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)pMVar11" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) (goto_statement "goto LAB_001c8419;" goto statement_identifier ;)) (ERROR "pMVar22 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (comma_expression "pMVar22 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std" (binary_expression "pMVar22 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "pMVar22 = (local_60->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char" (assignment_expression "pMVar22 = (local_60->merged_strings).\n              super__Vector_base<gold" identifier = (binary_expression "(local_60->merged_strings).\n              super__Vector_base<gold" (field_expression "(local_60->merged_strings).\n              super__Vector_base" (parenthesized_expression "(local_60->merged_strings)" ( (field_expression "local_60->merged_strings" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;" (field_expression "Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish" (field_expression "Output_merge_string<char>::Merged_string>_>\n              ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);" (assignment_expression "local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11)" identifier = (call_expression "(Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11)" (parenthesized_expression "(Stringpool_template<char> *)" ( (binary_expression "Stringpool_template<char> *" (binary_expression "Stringpool_template<char" identifier < identifier) > (pointer_expression "*" * identifier)) )) (argument_list "((int)pMVar22 - (int)pMVar11)" ( (binary_expression "(int)pMVar22 - (int)pMVar11" (cast_expression "(int)pMVar22" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pMVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_64 = uVar13 * 8;" (assignment_expression "local_64 = uVar13 * 8" identifier = (binary_expression "uVar13 * 8" identifier * number_literal)) ;) (if_statement "if (uVar13 != 0) goto LAB_001c85d4;" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c85d4;" goto statement_identifier ;)) (expression_statement "local_60 = (Merged_strings_list *)0x0;" (assignment_expression "local_60 = (Merged_strings_list *)0x0" identifier = (cast_expression "(Merged_strings_list *)0x0" ( (type_descriptor "Merged_strings_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pMVar7 = local_60;" (assignment_expression "pMVar7 = local_60" identifier = identifier) ;) (expression_statement "pMVar14 = pMVar11;" (assignment_expression "pMVar14 = pMVar11" identifier = identifier) ;) }) (else_clause "else {\n    pMVar11 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n    local_7c = (uint)(local_50 < local_58);\n    uVar21 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar21 <= (uint)((int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;\n    pMVar22 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;\n    local_64 = uVar21 * 8;\n    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);\n    pMVar20 = merged_strings_list;\nLAB_001c85d4:\n    *(uint *)(puVar15 + -0x10) = local_64;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c85e5;\n    local_6c = pMVar11;\n    local_60 = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));\n    pMVar11 = local_6c;\n    pMVar7 = local_60;\n    pMVar14 = (pMVar20->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n  }" else (compound_statement "{\n    pMVar11 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n    local_7c = (uint)(local_50 < local_58);\n    uVar21 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar21 <= (uint)((int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;\n    pMVar22 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;\n    local_64 = uVar21 * 8;\n    local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);\n    pMVar20 = merged_strings_list;\nLAB_001c85d4:\n    *(uint *)(puVar15 + -0x10) = local_64;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c85e5;\n    local_6c = pMVar11;\n    local_60 = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));\n    pMVar11 = local_6c;\n    pMVar7 = local_60;\n    pMVar14 = (pMVar20->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;\n  }" { (ERROR "pMVar11 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (comma_expression "pMVar11 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std" (binary_expression "pMVar11 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "pMVar11 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char" (assignment_expression "pMVar11 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold" identifier = (binary_expression "(merged_strings_list->merged_strings).\n              super__Vector_base<gold" (field_expression "(merged_strings_list->merged_strings).\n              super__Vector_base" (parenthesized_expression "(merged_strings_list->merged_strings)" ( (field_expression "merged_strings_list->merged_strings" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;" (field_expression "Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start" (field_expression "Output_merge_string<char>::Merged_string>_>\n              ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "local_7c = (uint)(local_50 < local_58);" (assignment_expression "local_7c = (uint)(local_50 < local_58)" identifier = (call_expression "(uint)(local_50 < local_58)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) )))) ;) (expression_statement "uVar21 = ~-(uint)(local_50 < local_58) + 2;" (assignment_expression "uVar21 = ~-(uint)(local_50 < local_58) + 2" identifier = (binary_expression "~-(uint)(local_50 < local_58) + 2" (unary_expression "~-(uint)(local_50 < local_58)" ~ (unary_expression "-(uint)(local_50 < local_58)" - (call_expression "(uint)(local_50 < local_58)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) ))))) + number_literal)) ;) (if_statement "if (uVar21 <= (uint)((int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)) goto LAB_001c8419;" if (parenthesized_expression "(uVar21 <= (uint)((int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3))" ( (binary_expression "uVar21 <= (uint)((int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)" identifier <= (call_expression "(uint)((int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3)" ( (binary_expression "(int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "(int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold::Output_merge_string<char" (binary_expression "(int)(merged_strings_list->merged_strings).\n                              super__Vector_base<gold" (cast_expression "(int)(merged_strings_list->merged_strings).\n                              super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(merged_strings_list->merged_strings).\n                              super__Vector_base" (parenthesized_expression "(merged_strings_list->merged_strings)" ( (field_expression "merged_strings_list->merged_strings" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , (ERROR "_std::allocator<gold::" identifier : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11 >> 3" (binary_expression "Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage - (int)pMVar11" (field_expression "Output_merge_string<char>::Merged_string>_>\n                              ._M_impl._M_end_of_storage" (field_expression "Output_merge_string<char>::Merged_string>_>\n                              ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)pMVar11" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) (goto_statement "goto LAB_001c8419;" goto statement_identifier ;)) (ERROR "pMVar22 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (comma_expression "pMVar22 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std" (binary_expression "pMVar22 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "pMVar22 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char" (assignment_expression "pMVar22 = (merged_strings_list->merged_strings).\n              super__Vector_base<gold" identifier = (binary_expression "(merged_strings_list->merged_strings).\n              super__Vector_base<gold" (field_expression "(merged_strings_list->merged_strings).\n              super__Vector_base" (parenthesized_expression "(merged_strings_list->merged_strings)" ( (field_expression "merged_strings_list->merged_strings" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish;" (field_expression "Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_finish" (field_expression "Output_merge_string<char>::Merged_string>_>\n              ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "local_64 = uVar21 * 8;" (assignment_expression "local_64 = uVar21 * 8" identifier = (binary_expression "uVar21 * 8" identifier * number_literal)) ;) (expression_statement "local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11);" (assignment_expression "local_68 = (Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11)" identifier = (call_expression "(Stringpool_template<char> *)((int)pMVar22 - (int)pMVar11)" (parenthesized_expression "(Stringpool_template<char> *)" ( (binary_expression "Stringpool_template<char> *" (binary_expression "Stringpool_template<char" identifier < identifier) > (pointer_expression "*" * identifier)) )) (argument_list "((int)pMVar22 - (int)pMVar11)" ( (binary_expression "(int)pMVar22 - (int)pMVar11" (cast_expression "(int)pMVar22" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pMVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pMVar20 = merged_strings_list;" (assignment_expression "pMVar20 = merged_strings_list" identifier = identifier) ;) (labeled_statement "LAB_001c85d4:\n    *(uint *)(puVar15 + -0x10) = local_64;" statement_identifier : (expression_statement "*(uint *)(puVar15 + -0x10) = local_64;" (assignment_expression "*(uint *)(puVar15 + -0x10) = local_64" (pointer_expression "*(uint *)(puVar15 + -0x10)" * (cast_expression "(uint *)(puVar15 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x1c85e5;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x1c85e5" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_6c = pMVar11;" (assignment_expression "local_6c = pMVar11" identifier = identifier) ;) (expression_statement "local_60 = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10));" (assignment_expression "local_60 = (Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10))" identifier = (cast_expression "(Merged_strings_list *)operator_new(*(uint *)(puVar15 + -0x10))" ( (type_descriptor "Merged_strings_list *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(*(uint *)(puVar15 + -0x10))" identifier (argument_list "(*(uint *)(puVar15 + -0x10))" ( (pointer_expression "*(uint *)(puVar15 + -0x10)" * (cast_expression "(uint *)(puVar15 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) ))))) ;) (expression_statement "pMVar11 = local_6c;" (assignment_expression "pMVar11 = local_6c" identifier = identifier) ;) (expression_statement "pMVar7 = local_60;" (assignment_expression "pMVar7 = local_60" identifier = identifier) ;) (ERROR "pMVar14 = (pMVar20->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (comma_expression "pMVar14 = (pMVar20->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std" (binary_expression "pMVar14 = (pMVar20->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "pMVar14 = (pMVar20->merged_strings).\n              super__Vector_base<gold::Output_merge_string<char" (assignment_expression "pMVar14 = (pMVar20->merged_strings).\n              super__Vector_base<gold" identifier = (binary_expression "(pMVar20->merged_strings).\n              super__Vector_base<gold" (field_expression "(pMVar20->merged_strings).\n              super__Vector_base" (parenthesized_expression "(pMVar20->merged_strings)" ( (field_expression "pMVar20->merged_strings" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start;" (field_expression "Output_merge_string<char>::Merged_string>_>\n              ._M_impl._M_start" (field_expression "Output_merge_string<char>::Merged_string>_>\n              ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) }))) (for_statement "for (; pMVar11 != pMVar22; pMVar11 = pMVar11 + 1) {\n    KVar6 = pMVar11->stringpool_key;\n    pMVar7->object = (Relobj *)pMVar11->offset;\n    pMVar7->shndx = KVar6;\n    local_6c = pMVar14;\n    pMVar7 = (Merged_strings_list *)&pMVar7->merged_strings;\n  }" for ( ; (binary_expression "pMVar11 != pMVar22" identifier != identifier) ; (assignment_expression "pMVar11 = pMVar11 + 1" identifier = (binary_expression "pMVar11 + 1" identifier + number_literal)) ) (compound_statement "{\n    KVar6 = pMVar11->stringpool_key;\n    pMVar7->object = (Relobj *)pMVar11->offset;\n    pMVar7->shndx = KVar6;\n    local_6c = pMVar14;\n    pMVar7 = (Merged_strings_list *)&pMVar7->merged_strings;\n  }" { (expression_statement "KVar6 = pMVar11->stringpool_key;" (assignment_expression "KVar6 = pMVar11->stringpool_key" identifier = (field_expression "pMVar11->stringpool_key" identifier -> field_identifier)) ;) (expression_statement "pMVar7->object = (Relobj *)pMVar11->offset;" (assignment_expression "pMVar7->object = (Relobj *)pMVar11->offset" (field_expression "pMVar7->object" identifier -> field_identifier) = (cast_expression "(Relobj *)pMVar11->offset" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pMVar11->offset" identifier -> field_identifier))) ;) (expression_statement "pMVar7->shndx = KVar6;" (assignment_expression "pMVar7->shndx = KVar6" (field_expression "pMVar7->shndx" identifier -> field_identifier) = identifier) ;) (expression_statement "local_6c = pMVar14;" (assignment_expression "local_6c = pMVar14" identifier = identifier) ;) (expression_statement "pMVar7 = (Merged_strings_list *)&pMVar7->merged_strings;" (assignment_expression "pMVar7 = (Merged_strings_list *)&pMVar7->merged_strings" identifier = (cast_expression "(Merged_strings_list *)&pMVar7->merged_strings" ( (type_descriptor "Merged_strings_list *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pMVar7->merged_strings" & (field_expression "pMVar7->merged_strings" identifier -> field_identifier)))) ;) })) (if_statement "if (pMVar14 != (pointer)0x0) {\n    *(pointer *)(puVar15 + -0x10) = pMVar14;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c8628;\n    operator_delete(*(void **)(puVar15 + -0x10));\n  }" if (parenthesized_expression "(pMVar14 != (pointer)0x0)" ( (binary_expression "pMVar14 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n    *(pointer *)(puVar15 + -0x10) = pMVar14;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c8628;\n    operator_delete(*(void **)(puVar15 + -0x10));\n  }" { (expression_statement "*(pointer *)(puVar15 + -0x10) = pMVar14;" (assignment_expression "*(pointer *)(puVar15 + -0x10) = pMVar14" (pointer_expression "*(pointer *)(puVar15 + -0x10)" * (cast_expression "(pointer *)(puVar15 + -0x10)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x1c8628;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x1c8628" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "operator_delete(*(void **)(puVar15 + -0x10));" (call_expression "operator_delete(*(void **)(puVar15 + -0x10))" identifier (argument_list "(*(void **)(puVar15 + -0x10))" ( (pointer_expression "*(void **)(puVar15 + -0x10)" * (cast_expression "(void **)(puVar15 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) ))) ;) })) (ERROR "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (comma_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std" (binary_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char" (binary_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold" (field_expression "(pMVar20->merged_strings).\n  super__Vector_base" (parenthesized_expression "(pMVar20->merged_strings)" ( (field_expression "pMVar20->merged_strings" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start = (pointer)local_60;" (assignment_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start = (pointer)local_60" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_start" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)local_60" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (ERROR "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (comma_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std" (binary_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char" (binary_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold" (field_expression "(pMVar20->merged_strings).\n  super__Vector_base" (parenthesized_expression "(pMVar20->merged_strings)" ( (field_expression "pMVar20->merged_strings" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish = (pointer)((int)&(local_68->string_set_)._M_h._M_buckets + (int)local_60);" (assignment_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish = (pointer)((int)&(local_68->string_set_)._M_h._M_buckets + (int)local_60)" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_finish" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (call_expression "(pointer)((int)&(local_68->string_set_)._M_h._M_buckets + (int)local_60)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((int)&(local_68->string_set_)._M_h._M_buckets + (int)local_60)" ( (binary_expression "(int)&(local_68->string_set_)._M_h._M_buckets + (int)local_60" (cast_expression "(int)&(local_68->string_set_)._M_h._M_buckets" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(local_68->string_set_)._M_h._M_buckets" & (field_expression "(local_68->string_set_)._M_h._M_buckets" (field_expression "(local_68->string_set_)._M_h" (parenthesized_expression "(local_68->string_set_)" ( (field_expression "local_68->string_set_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) + (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (ERROR "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (comma_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string,_std" (binary_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char>::Merged_string" (binary_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold::Output_merge_string<char" (binary_expression "(pMVar20->merged_strings).\n  super__Vector_base<gold" (field_expression "(pMVar20->merged_strings).\n  super__Vector_base" (parenthesized_expression "(pMVar20->merged_strings)" ( (field_expression "pMVar20->merged_strings" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_merge_string" : : identifier) < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage = (pointer)((int)&local_60->object + local_64);" (assignment_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage = (pointer)((int)&local_60->object + local_64)" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl._M_end_of_storage" (field_expression "Output_merge_string<char>::Merged_string>_>\n  ._M_impl" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (call_expression "(pointer)((int)&local_60->object + local_64)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((int)&local_60->object + local_64)" ( (binary_expression "(int)&local_60->object + local_64" (cast_expression "(int)&local_60->object" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_60->object" & (field_expression "local_60->object" identifier -> field_identifier))) + identifier) )))) ;) (labeled_statement "LAB_001c8419:\n  puVar18 = local_50;" statement_identifier : (expression_statement "puVar18 = local_50;" (assignment_expression "puVar18 = local_50" identifier = identifier) ;)) (expression_statement "local_74 = (int)addralign - 1U & (uint)local_78;" (assignment_expression "local_74 = (int)addralign - 1U & (uint)local_78" identifier = (binary_expression "(int)addralign - 1U & (uint)local_78" (binary_expression "(int)addralign - 1U" (cast_expression "(int)addralign" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & (cast_expression "(uint)local_78" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" identifier = identifier) ;) (if_statement "if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = &this->stringpool_;\n    local_60 = &local_34;\n    local_6c = (pointer)&key;\n    local_50 = local_78;\n    local_70 = puVar18;\n    pRVar19 = (Relobj *)0x0;\n    do {\n      sVar8 = (int)local_58 - (int)local_50;\n      if (local_50 < local_70) {\n        *(uchar **)(puVar15 + -0x10) = local_50;\n        *(undefined4 *)(puVar15 + -0x14) = 0x1c8471;\n        sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      }\n      if (sVar8 != 0) {\n        uVar10 = (char)local_64;\n        if (((int)addralign - 1U & (uint)local_50) != local_74) {\n          uVar10 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar10);\n      }\n      *(pointer *)(puVar15 + -0x10) = local_6c;\n      *(undefined4 *)(puVar15 + -0x14) = 1;\n      *(size_t *)(puVar15 + -0x18) = sVar8;\n      *(uchar **)(puVar15 + -0x1c) = local_50;\n      *(Stringpool_template<char> **)(puVar15 + -0x20) = local_68;\n      *(undefined4 *)(puVar15 + -0x24) = 0x1c84ac;\n      Stringpool_template<char>::add_with_length\n                (*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),\n                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10));\n      *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n      *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n      local_34.shndx = key;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c84c3;\n      local_34.object = pRVar19;\n      std::\n      vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n      ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n                (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n      pMVar20 = local_60;\n      local_50 = local_50 + sVar8 + 1;\n      pRVar19 = (Relobj *)((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1);\n    } while (local_50 < local_58);\n    local_34.shndx = 0;\n    *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n    *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c84ef;\n    local_34.object = pRVar19;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n    this->input_count_ = this->input_count_ + local_7c;\n    this->input_size_ = (size_t)((int)&(pRVar19->super_Object)._vptr_Object + this->input_size_);\n    if ((char)local_64 != '\0') {\n      pp_Var5 = (object->super_Object)._vptr_Object;\n      *(uint *)(puVar15 + -8) = shndx;\n      *(Relobj **)(puVar15 + -0xc) = object;\n      *(Merged_strings_list **)(puVar15 + -0x10) = pMVar20;\n      p_Var2 = pp_Var5[0x10];\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c851c;\n      (*p_Var2)();\n      pRVar19 = local_34.object;\n      pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n      *(undefined ***)(puVar15 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8534;\n      uVar9 = gettext();\n      *(Relobj **)(puVar15 + -0xc) = pRVar19;\n      *(pointer *)(puVar15 + -0x10) = pcVar3;\n      *(undefined4 *)(puVar15 + -0x14) = uVar9;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8544;\n      gold_warning(*(char **)(puVar15 + -0x14));\n      puVar16 = puVar15 + -4;\n      if (local_34.object != (Relobj *)&local_34.merged_strings) {\n        *(Relobj **)(puVar15 + -0x14) = local_34.object;\n        *(undefined4 *)(puVar15 + -0x18) = 0x1c855a;\n        operator_delete(*(void **)(puVar15 + -0x14));\n        puVar16 = puVar15 + -4;\n      }\n    }\n  }\n  else {\n    local_34.object = (Relobj *)0x0;\n    *(Merged_strings_list **)(puVar15 + -0xc) = &local_34;\n    *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n    local_34.shndx = 0;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c86bd;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n    this->input_count_ = this->input_count_ + local_7c;\n  }" if (parenthesized_expression "(local_78 < local_58)" ( (binary_expression "local_78 < local_58" identifier < identifier) )) (compound_statement "{\n    local_64 = local_64 & 0xffffff00;\n    local_68 = &this->stringpool_;\n    local_60 = &local_34;\n    local_6c = (pointer)&key;\n    local_50 = local_78;\n    local_70 = puVar18;\n    pRVar19 = (Relobj *)0x0;\n    do {\n      sVar8 = (int)local_58 - (int)local_50;\n      if (local_50 < local_70) {\n        *(uchar **)(puVar15 + -0x10) = local_50;\n        *(undefined4 *)(puVar15 + -0x14) = 0x1c8471;\n        sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      }\n      if (sVar8 != 0) {\n        uVar10 = (char)local_64;\n        if (((int)addralign - 1U & (uint)local_50) != local_74) {\n          uVar10 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar10);\n      }\n      *(pointer *)(puVar15 + -0x10) = local_6c;\n      *(undefined4 *)(puVar15 + -0x14) = 1;\n      *(size_t *)(puVar15 + -0x18) = sVar8;\n      *(uchar **)(puVar15 + -0x1c) = local_50;\n      *(Stringpool_template<char> **)(puVar15 + -0x20) = local_68;\n      *(undefined4 *)(puVar15 + -0x24) = 0x1c84ac;\n      Stringpool_template<char>::add_with_length\n                (*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),\n                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10));\n      *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n      *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n      local_34.shndx = key;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c84c3;\n      local_34.object = pRVar19;\n      std::\n      vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n      ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n                (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n      pMVar20 = local_60;\n      local_50 = local_50 + sVar8 + 1;\n      pRVar19 = (Relobj *)((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1);\n    } while (local_50 < local_58);\n    local_34.shndx = 0;\n    *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n    *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c84ef;\n    local_34.object = pRVar19;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n    this->input_count_ = this->input_count_ + local_7c;\n    this->input_size_ = (size_t)((int)&(pRVar19->super_Object)._vptr_Object + this->input_size_);\n    if ((char)local_64 != '\0') {\n      pp_Var5 = (object->super_Object)._vptr_Object;\n      *(uint *)(puVar15 + -8) = shndx;\n      *(Relobj **)(puVar15 + -0xc) = object;\n      *(Merged_strings_list **)(puVar15 + -0x10) = pMVar20;\n      p_Var2 = pp_Var5[0x10];\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c851c;\n      (*p_Var2)();\n      pRVar19 = local_34.object;\n      pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n      *(undefined ***)(puVar15 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8534;\n      uVar9 = gettext();\n      *(Relobj **)(puVar15 + -0xc) = pRVar19;\n      *(pointer *)(puVar15 + -0x10) = pcVar3;\n      *(undefined4 *)(puVar15 + -0x14) = uVar9;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8544;\n      gold_warning(*(char **)(puVar15 + -0x14));\n      puVar16 = puVar15 + -4;\n      if (local_34.object != (Relobj *)&local_34.merged_strings) {\n        *(Relobj **)(puVar15 + -0x14) = local_34.object;\n        *(undefined4 *)(puVar15 + -0x18) = 0x1c855a;\n        operator_delete(*(void **)(puVar15 + -0x14));\n        puVar16 = puVar15 + -4;\n      }\n    }\n  }" { (expression_statement "local_64 = local_64 & 0xffffff00;" (assignment_expression "local_64 = local_64 & 0xffffff00" identifier = (binary_expression "local_64 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "local_68 = &this->stringpool_;" (assignment_expression "local_68 = &this->stringpool_" identifier = (pointer_expression "&this->stringpool_" & (field_expression "this->stringpool_" identifier -> field_identifier))) ;) (expression_statement "local_60 = &local_34;" (assignment_expression "local_60 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_6c = (pointer)&key;" (assignment_expression "local_6c = (pointer)&key" identifier = (binary_expression "(pointer)&key" (parenthesized_expression "(pointer)" ( identifier )) & identifier)) ;) (expression_statement "local_50 = local_78;" (assignment_expression "local_50 = local_78" identifier = identifier) ;) (expression_statement "local_70 = puVar18;" (assignment_expression "local_70 = puVar18" identifier = identifier) ;) (expression_statement "pRVar19 = (Relobj *)0x0;" (assignment_expression "pRVar19 = (Relobj *)0x0" identifier = (cast_expression "(Relobj *)0x0" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      sVar8 = (int)local_58 - (int)local_50;\n      if (local_50 < local_70) {\n        *(uchar **)(puVar15 + -0x10) = local_50;\n        *(undefined4 *)(puVar15 + -0x14) = 0x1c8471;\n        sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      }\n      if (sVar8 != 0) {\n        uVar10 = (char)local_64;\n        if (((int)addralign - 1U & (uint)local_50) != local_74) {\n          uVar10 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar10);\n      }\n      *(pointer *)(puVar15 + -0x10) = local_6c;\n      *(undefined4 *)(puVar15 + -0x14) = 1;\n      *(size_t *)(puVar15 + -0x18) = sVar8;\n      *(uchar **)(puVar15 + -0x1c) = local_50;\n      *(Stringpool_template<char> **)(puVar15 + -0x20) = local_68;\n      *(undefined4 *)(puVar15 + -0x24) = 0x1c84ac;\n      Stringpool_template<char>::add_with_length\n                (*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),\n                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10));\n      *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n      *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n      local_34.shndx = key;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c84c3;\n      local_34.object = pRVar19;\n      std::\n      vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n      ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n                (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n      pMVar20 = local_60;\n      local_50 = local_50 + sVar8 + 1;\n      pRVar19 = (Relobj *)((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1);\n    } while (local_50 < local_58);" do (compound_statement "{\n      sVar8 = (int)local_58 - (int)local_50;\n      if (local_50 < local_70) {\n        *(uchar **)(puVar15 + -0x10) = local_50;\n        *(undefined4 *)(puVar15 + -0x14) = 0x1c8471;\n        sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      }\n      if (sVar8 != 0) {\n        uVar10 = (char)local_64;\n        if (((int)addralign - 1U & (uint)local_50) != local_74) {\n          uVar10 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar10);\n      }\n      *(pointer *)(puVar15 + -0x10) = local_6c;\n      *(undefined4 *)(puVar15 + -0x14) = 1;\n      *(size_t *)(puVar15 + -0x18) = sVar8;\n      *(uchar **)(puVar15 + -0x1c) = local_50;\n      *(Stringpool_template<char> **)(puVar15 + -0x20) = local_68;\n      *(undefined4 *)(puVar15 + -0x24) = 0x1c84ac;\n      Stringpool_template<char>::add_with_length\n                (*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),\n                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10));\n      *(Merged_strings_list **)(puVar15 + -0xc) = local_60;\n      *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n      local_34.shndx = key;\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c84c3;\n      local_34.object = pRVar19;\n      std::\n      vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n      ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n                (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n      pMVar20 = local_60;\n      local_50 = local_50 + sVar8 + 1;\n      pRVar19 = (Relobj *)((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1);\n    }" { (expression_statement "sVar8 = (int)local_58 - (int)local_50;" (assignment_expression "sVar8 = (int)local_58 - (int)local_50" identifier = (binary_expression "(int)local_58 - (int)local_50" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (local_50 < local_70) {\n        *(uchar **)(puVar15 + -0x10) = local_50;\n        *(undefined4 *)(puVar15 + -0x14) = 0x1c8471;\n        sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      }" if (parenthesized_expression "(local_50 < local_70)" ( (binary_expression "local_50 < local_70" identifier < identifier) )) (compound_statement "{\n        *(uchar **)(puVar15 + -0x10) = local_50;\n        *(undefined4 *)(puVar15 + -0x14) = 0x1c8471;\n        sVar8 = strlen(*(char **)(puVar15 + -0x10));\n      }" { (expression_statement "*(uchar **)(puVar15 + -0x10) = local_50;" (assignment_expression "*(uchar **)(puVar15 + -0x10) = local_50" (pointer_expression "*(uchar **)(puVar15 + -0x10)" * (cast_expression "(uchar **)(puVar15 + -0x10)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x1c8471;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x1c8471" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "sVar8 = strlen(*(char **)(puVar15 + -0x10));" (assignment_expression "sVar8 = strlen(*(char **)(puVar15 + -0x10))" identifier = (call_expression "strlen(*(char **)(puVar15 + -0x10))" identifier (argument_list "(*(char **)(puVar15 + -0x10))" ( (pointer_expression "*(char **)(puVar15 + -0x10)" * (cast_expression "(char **)(puVar15 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) )))) ;) })) (if_statement "if (sVar8 != 0) {\n        uVar10 = (char)local_64;\n        if (((int)addralign - 1U & (uint)local_50) != local_74) {\n          uVar10 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar10);\n      }" if (parenthesized_expression "(sVar8 != 0)" ( (binary_expression "sVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar10 = (char)local_64;\n        if (((int)addralign - 1U & (uint)local_50) != local_74) {\n          uVar10 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar10);\n      }" { (expression_statement "uVar10 = (char)local_64;" (assignment_expression "uVar10 = (char)local_64" identifier = (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (((int)addralign - 1U & (uint)local_50) != local_74) {\n          uVar10 = 1;\n        }" if (parenthesized_expression "(((int)addralign - 1U & (uint)local_50) != local_74)" ( (binary_expression "((int)addralign - 1U & (uint)local_50) != local_74" (parenthesized_expression "((int)addralign - 1U & (uint)local_50)" ( (binary_expression "(int)addralign - 1U & (uint)local_50" (binary_expression "(int)addralign - 1U" (cast_expression "(int)addralign" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & (cast_expression "(uint)local_50" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != identifier) )) (compound_statement "{\n          uVar10 = 1;\n        }" { (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) })) (expression_statement "local_64 = CONCAT31(local_64._1_3_,uVar10);" (assignment_expression "local_64 = CONCAT31(local_64._1_3_,uVar10)" identifier = (call_expression "CONCAT31(local_64._1_3_,uVar10)" identifier (argument_list "(local_64._1_3_,uVar10)" ( (field_expression "local_64._1_3_" identifier . field_identifier) , identifier )))) ;) })) (expression_statement "*(pointer *)(puVar15 + -0x10) = local_6c;" (assignment_expression "*(pointer *)(puVar15 + -0x10) = local_6c" (pointer_expression "*(pointer *)(puVar15 + -0x10)" * (cast_expression "(pointer *)(puVar15 + -0x10)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 1;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 1" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(size_t *)(puVar15 + -0x18) = sVar8;" (assignment_expression "*(size_t *)(puVar15 + -0x18) = sVar8" (pointer_expression "*(size_t *)(puVar15 + -0x18)" * (cast_expression "(size_t *)(puVar15 + -0x18)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x18)" ( (binary_expression "puVar15 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uchar **)(puVar15 + -0x1c) = local_50;" (assignment_expression "*(uchar **)(puVar15 + -0x1c) = local_50" (pointer_expression "*(uchar **)(puVar15 + -0x1c)" * (cast_expression "(uchar **)(puVar15 + -0x1c)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x1c)" ( (binary_expression "puVar15 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(Stringpool_template<char> **)(puVar15 + -0x20) = local_68;" (assignment_expression "*(Stringpool_template<char> **)(puVar15 + -0x20) = local_68" (pointer_expression "*(Stringpool_template<char> **)(puVar15 + -0x20)" * (call_expression "(Stringpool_template<char> **)(puVar15 + -0x20)" (parenthesized_expression "(Stringpool_template<char> **)" ( (binary_expression "Stringpool_template<char> **" (binary_expression "Stringpool_template<char" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(puVar15 + -0x20)" ( (binary_expression "puVar15 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x24) = 0x1c84ac;" (assignment_expression "*(undefined4 *)(puVar15 + -0x24) = 0x1c84ac" (pointer_expression "*(undefined4 *)(puVar15 + -0x24)" * (cast_expression "(undefined4 *)(puVar15 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x24)" ( (binary_expression "puVar15 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "Stringpool_template<char>::add_with_length\n                (*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),\n                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10));" (binary_expression "Stringpool_template<char>::add_with_length\n                (*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),\n                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10))" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "add_with_length\n                (*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),\n                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10))" identifier (argument_list "(*(Stringpool_template<char> **)(puVar15 + -0x20),*(char **)(puVar15 + -0x1c),\n                 *(size_t *)(puVar15 + -0x18),(bool)puVar15[-0x14],*(Key **)(puVar15 + -0x10))" ( (pointer_expression "*(Stringpool_template<char> **)(puVar15 + -0x20)" * (call_expression "(Stringpool_template<char> **)(puVar15 + -0x20)" (parenthesized_expression "(Stringpool_template<char> **)" ( (binary_expression "Stringpool_template<char> **" (binary_expression "Stringpool_template<char" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(puVar15 + -0x20)" ( (binary_expression "puVar15 + -0x20" identifier + number_literal) )))) , (pointer_expression "*(char **)(puVar15 + -0x1c)" * (cast_expression "(char **)(puVar15 + -0x1c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x1c)" ( (binary_expression "puVar15 + -0x1c" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar15 + -0x18)" * (cast_expression "(size_t *)(puVar15 + -0x18)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x18)" ( (binary_expression "puVar15 + -0x18" identifier + number_literal) )))) , (cast_expression "(bool)puVar15[-0x14]" ( (type_descriptor "bool" primitive_type) ) (subscript_expression "puVar15[-0x14]" identifier [ number_literal ])) , (pointer_expression "*(Key **)(puVar15 + -0x10)" * (cast_expression "(Key **)(puVar15 + -0x10)" ( (type_descriptor "Key **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "*(Merged_strings_list **)(puVar15 + -0xc) = local_60;" (assignment_expression "*(Merged_strings_list **)(puVar15 + -0xc) = local_60" (pointer_expression "*(Merged_strings_list **)(puVar15 + -0xc)" * (cast_expression "(Merged_strings_list **)(puVar15 + -0xc)" ( (type_descriptor "Merged_strings_list **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(Merged_strings **)(puVar15 + -0x10) = local_5c;" (assignment_expression "*(Merged_strings **)(puVar15 + -0x10) = local_5c" (pointer_expression "*(Merged_strings **)(puVar15 + -0x10)" * (cast_expression "(Merged_strings **)(puVar15 + -0x10)" ( (type_descriptor "Merged_strings **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_34.shndx = key;" (assignment_expression "local_34.shndx = key" (field_expression "local_34.shndx" identifier . field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x1c84c3;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x1c84c3" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_34.object = pRVar19;" (assignment_expression "local_34.object = pRVar19" (field_expression "local_34.object" identifier . field_identifier) = identifier) ;) (labeled_statement "std::\n      vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n      ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n                (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));" statement_identifier (ERROR "::\n      vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n      ::emplace_back<gold::Output_merge_string<char>:" : : (binary_expression "vector<gold" identifier < identifier) : : (binary_expression "Output_merge_string<char" identifier < identifier) > : : (comma_expression "Merged_string,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Output_merge_string<char" identifier < identifier) > : : (binary_expression "Merged_string>_" identifier > identifier) > : : (binary_expression "emplace_back<gold" identifier < identifier) : : (binary_expression "Output_merge_string<char" identifier < identifier) > :) : (expression_statement "Merged_string>\n                (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));" (binary_expression "Merged_string>\n                (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc))" identifier > (parenthesized_expression "(*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc))" ( (comma_expression "*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc)" (pointer_expression "*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10)" * (call_expression "(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)(puVar15 + -0x10)" (parenthesized_expression "(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                   **)" ( (ERROR "vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Output_merge_string<char>::Merged_string,_std" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_merge_string<char>::Merged_string>_>\n                   **" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(Merged_string **)(puVar15 + -0xc)" * (cast_expression "(Merged_string **)(puVar15 + -0xc)" ( (type_descriptor "Merged_string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) ))))) ))) ;)) (expression_statement "pMVar20 = local_60;" (assignment_expression "pMVar20 = local_60" identifier = identifier) ;) (expression_statement "local_50 = local_50 + sVar8 + 1;" (assignment_expression "local_50 = local_50 + sVar8 + 1" identifier = (binary_expression "local_50 + sVar8 + 1" (binary_expression "local_50 + sVar8" identifier + identifier) + number_literal)) ;) (expression_statement "pRVar19 = (Relobj *)((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1);" (assignment_expression "pRVar19 = (Relobj *)((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1)" identifier = (cast_expression "(Relobj *)((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1)" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1)" ( (binary_expression "(int)&(pRVar19->super_Object)._vptr_Object + sVar8 + 1" (binary_expression "(int)&(pRVar19->super_Object)._vptr_Object + sVar8" (cast_expression "(int)&(pRVar19->super_Object)._vptr_Object" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pRVar19->super_Object)._vptr_Object" & (field_expression "(pRVar19->super_Object)._vptr_Object" (parenthesized_expression "(pRVar19->super_Object)" ( (field_expression "pRVar19->super_Object" identifier -> field_identifier) )) . field_identifier))) + identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) )) ;) (expression_statement "local_34.shndx = 0;" (assignment_expression "local_34.shndx = 0" (field_expression "local_34.shndx" identifier . field_identifier) = number_literal) ;) (expression_statement "*(Merged_strings_list **)(puVar15 + -0xc) = local_60;" (assignment_expression "*(Merged_strings_list **)(puVar15 + -0xc) = local_60" (pointer_expression "*(Merged_strings_list **)(puVar15 + -0xc)" * (cast_expression "(Merged_strings_list **)(puVar15 + -0xc)" ( (type_descriptor "Merged_strings_list **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(Merged_strings **)(puVar15 + -0x10) = local_5c;" (assignment_expression "*(Merged_strings **)(puVar15 + -0x10) = local_5c" (pointer_expression "*(Merged_strings **)(puVar15 + -0x10)" * (cast_expression "(Merged_strings **)(puVar15 + -0x10)" ( (type_descriptor "Merged_strings **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x1c84ef;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x1c84ef" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_34.object = pRVar19;" (assignment_expression "local_34.object = pRVar19" (field_expression "local_34.object" identifier . field_identifier) = identifier) ;) (labeled_statement "std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));" statement_identifier (ERROR "::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>:" : : (binary_expression "vector<gold" identifier < identifier) : : (binary_expression "Output_merge_string<char" identifier < identifier) > : : (comma_expression "Merged_string,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Output_merge_string<char" identifier < identifier) > : : (binary_expression "Merged_string>_" identifier > identifier) > : : (binary_expression "emplace_back<gold" identifier < identifier) : : (binary_expression "Output_merge_string<char" identifier < identifier) > :) : (expression_statement "Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));" (binary_expression "Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc))" identifier > (parenthesized_expression "(*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc))" ( (comma_expression "*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc)" (pointer_expression "*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10)" * (call_expression "(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10)" (parenthesized_expression "(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)" ( (ERROR "vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Output_merge_string<char>::Merged_string,_std" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_merge_string<char>::Merged_string>_>\n                 **" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(Merged_string **)(puVar15 + -0xc)" * (cast_expression "(Merged_string **)(puVar15 + -0xc)" ( (type_descriptor "Merged_string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) ))))) ))) ;)) (expression_statement "this->input_count_ = this->input_count_ + local_7c;" (assignment_expression "this->input_count_ = this->input_count_ + local_7c" (field_expression "this->input_count_" identifier -> field_identifier) = (binary_expression "this->input_count_ + local_7c" (field_expression "this->input_count_" identifier -> field_identifier) + identifier)) ;) (expression_statement "this->input_size_ = (size_t)((int)&(pRVar19->super_Object)._vptr_Object + this->input_size_);" (assignment_expression "this->input_size_ = (size_t)((int)&(pRVar19->super_Object)._vptr_Object + this->input_size_)" (field_expression "this->input_size_" identifier -> field_identifier) = (cast_expression "(size_t)((int)&(pRVar19->super_Object)._vptr_Object + this->input_size_)" ( (type_descriptor "size_t" primitive_type) ) (parenthesized_expression "((int)&(pRVar19->super_Object)._vptr_Object + this->input_size_)" ( (binary_expression "(int)&(pRVar19->super_Object)._vptr_Object + this->input_size_" (cast_expression "(int)&(pRVar19->super_Object)._vptr_Object" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pRVar19->super_Object)._vptr_Object" & (field_expression "(pRVar19->super_Object)._vptr_Object" (parenthesized_expression "(pRVar19->super_Object)" ( (field_expression "pRVar19->super_Object" identifier -> field_identifier) )) . field_identifier))) + (field_expression "this->input_size_" identifier -> field_identifier)) )))) ;) (if_statement "if ((char)local_64 != '\0') {\n      pp_Var5 = (object->super_Object)._vptr_Object;\n      *(uint *)(puVar15 + -8) = shndx;\n      *(Relobj **)(puVar15 + -0xc) = object;\n      *(Merged_strings_list **)(puVar15 + -0x10) = pMVar20;\n      p_Var2 = pp_Var5[0x10];\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c851c;\n      (*p_Var2)();\n      pRVar19 = local_34.object;\n      pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n      *(undefined ***)(puVar15 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8534;\n      uVar9 = gettext();\n      *(Relobj **)(puVar15 + -0xc) = pRVar19;\n      *(pointer *)(puVar15 + -0x10) = pcVar3;\n      *(undefined4 *)(puVar15 + -0x14) = uVar9;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8544;\n      gold_warning(*(char **)(puVar15 + -0x14));\n      puVar16 = puVar15 + -4;\n      if (local_34.object != (Relobj *)&local_34.merged_strings) {\n        *(Relobj **)(puVar15 + -0x14) = local_34.object;\n        *(undefined4 *)(puVar15 + -0x18) = 0x1c855a;\n        operator_delete(*(void **)(puVar15 + -0x14));\n        puVar16 = puVar15 + -4;\n      }\n    }" if (parenthesized_expression "((char)local_64 != '\0')" ( (binary_expression "(char)local_64 != '\0'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pp_Var5 = (object->super_Object)._vptr_Object;\n      *(uint *)(puVar15 + -8) = shndx;\n      *(Relobj **)(puVar15 + -0xc) = object;\n      *(Merged_strings_list **)(puVar15 + -0x10) = pMVar20;\n      p_Var2 = pp_Var5[0x10];\n      *(undefined4 *)(puVar15 + -0x14) = 0x1c851c;\n      (*p_Var2)();\n      pRVar19 = local_34.object;\n      pcVar3 = (object->super_Object).name_._M_dataplus._M_p;\n      *(undefined ***)(puVar15 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8534;\n      uVar9 = gettext();\n      *(Relobj **)(puVar15 + -0xc) = pRVar19;\n      *(pointer *)(puVar15 + -0x10) = pcVar3;\n      *(undefined4 *)(puVar15 + -0x14) = uVar9;\n                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */\n      *(undefined4 *)(puVar15 + -0x18) = 0x1c8544;\n      gold_warning(*(char **)(puVar15 + -0x14));\n      puVar16 = puVar15 + -4;\n      if (local_34.object != (Relobj *)&local_34.merged_strings) {\n        *(Relobj **)(puVar15 + -0x14) = local_34.object;\n        *(undefined4 *)(puVar15 + -0x18) = 0x1c855a;\n        operator_delete(*(void **)(puVar15 + -0x14));\n        puVar16 = puVar15 + -4;\n      }\n    }" { (expression_statement "pp_Var5 = (object->super_Object)._vptr_Object;" (assignment_expression "pp_Var5 = (object->super_Object)._vptr_Object" identifier = (field_expression "(object->super_Object)._vptr_Object" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*(uint *)(puVar15 + -8) = shndx;" (assignment_expression "*(uint *)(puVar15 + -8) = shndx" (pointer_expression "*(uint *)(puVar15 + -8)" * (cast_expression "(uint *)(puVar15 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -8)" ( (binary_expression "puVar15 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(Relobj **)(puVar15 + -0xc) = object;" (assignment_expression "*(Relobj **)(puVar15 + -0xc) = object" (pointer_expression "*(Relobj **)(puVar15 + -0xc)" * (cast_expression "(Relobj **)(puVar15 + -0xc)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(Merged_strings_list **)(puVar15 + -0x10) = pMVar20;" (assignment_expression "*(Merged_strings_list **)(puVar15 + -0x10) = pMVar20" (pointer_expression "*(Merged_strings_list **)(puVar15 + -0x10)" * (cast_expression "(Merged_strings_list **)(puVar15 + -0x10)" ( (type_descriptor "Merged_strings_list **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "p_Var2 = pp_Var5[0x10];" (assignment_expression "p_Var2 = pp_Var5[0x10]" identifier = (subscript_expression "pp_Var5[0x10]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x1c851c;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x1c851c" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*p_Var2)();" (call_expression "(*p_Var2)()" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pRVar19 = local_34.object;" (assignment_expression "pRVar19 = local_34.object" identifier = (field_expression "local_34.object" identifier . field_identifier)) ;) (expression_statement "pcVar3 = (object->super_Object).name_._M_dataplus._M_p;" (assignment_expression "pcVar3 = (object->super_Object).name_._M_dataplus._M_p" identifier = (field_expression "(object->super_Object).name_._M_dataplus._M_p" (field_expression "(object->super_Object).name_._M_dataplus" (field_expression "(object->super_Object).name_" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "*(undefined ***)(puVar15 + -0x14) = local_54 + -0x3bbef;" (assignment_expression "*(undefined ***)(puVar15 + -0x14) = local_54 + -0x3bbef" (pointer_expression "*(undefined ***)(puVar15 + -0x14)" * (cast_expression "(undefined ***)(puVar15 + -0x14)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = (binary_expression "local_54 + -0x3bbef" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x18) = 0x1c8534;" (assignment_expression "*(undefined4 *)(puVar15 + -0x18) = 0x1c8534" (pointer_expression "*(undefined4 *)(puVar15 + -0x18)" * (cast_expression "(undefined4 *)(puVar15 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x18)" ( (binary_expression "puVar15 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = gettext();" (assignment_expression "uVar9 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(Relobj **)(puVar15 + -0xc) = pRVar19;" (assignment_expression "*(Relobj **)(puVar15 + -0xc) = pRVar19" (pointer_expression "*(Relobj **)(puVar15 + -0xc)" * (cast_expression "(Relobj **)(puVar15 + -0xc)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(pointer *)(puVar15 + -0x10) = pcVar3;" (assignment_expression "*(pointer *)(puVar15 + -0x10) = pcVar3" (pointer_expression "*(pointer *)(puVar15 + -0x10)" * (cast_expression "(pointer *)(puVar15 + -0x10)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = uVar9;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = uVar9" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)(puVar15 + -0x18) = 0x1c8544;" (assignment_expression "*(undefined4 *)(puVar15 + -0x18) = 0x1c8544" (pointer_expression "*(undefined4 *)(puVar15 + -0x18)" * (cast_expression "(undefined4 *)(puVar15 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x18)" ( (binary_expression "puVar15 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "gold_warning(*(char **)(puVar15 + -0x14));" (call_expression "gold_warning(*(char **)(puVar15 + -0x14))" identifier (argument_list "(*(char **)(puVar15 + -0x14))" ( (pointer_expression "*(char **)(puVar15 + -0x14)" * (cast_expression "(char **)(puVar15 + -0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) ))) ;) (expression_statement "puVar16 = puVar15 + -4;" (assignment_expression "puVar16 = puVar15 + -4" identifier = (binary_expression "puVar15 + -4" identifier + number_literal)) ;) (if_statement "if (local_34.object != (Relobj *)&local_34.merged_strings) {\n        *(Relobj **)(puVar15 + -0x14) = local_34.object;\n        *(undefined4 *)(puVar15 + -0x18) = 0x1c855a;\n        operator_delete(*(void **)(puVar15 + -0x14));\n        puVar16 = puVar15 + -4;\n      }" if (parenthesized_expression "(local_34.object != (Relobj *)&local_34.merged_strings)" ( (binary_expression "local_34.object != (Relobj *)&local_34.merged_strings" (field_expression "local_34.object" identifier . field_identifier) != (cast_expression "(Relobj *)&local_34.merged_strings" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34.merged_strings" & (field_expression "local_34.merged_strings" identifier . field_identifier)))) )) (compound_statement "{\n        *(Relobj **)(puVar15 + -0x14) = local_34.object;\n        *(undefined4 *)(puVar15 + -0x18) = 0x1c855a;\n        operator_delete(*(void **)(puVar15 + -0x14));\n        puVar16 = puVar15 + -4;\n      }" { (expression_statement "*(Relobj **)(puVar15 + -0x14) = local_34.object;" (assignment_expression "*(Relobj **)(puVar15 + -0x14) = local_34.object" (pointer_expression "*(Relobj **)(puVar15 + -0x14)" * (cast_expression "(Relobj **)(puVar15 + -0x14)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = (field_expression "local_34.object" identifier . field_identifier)) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x18) = 0x1c855a;" (assignment_expression "*(undefined4 *)(puVar15 + -0x18) = 0x1c855a" (pointer_expression "*(undefined4 *)(puVar15 + -0x18)" * (cast_expression "(undefined4 *)(puVar15 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x18)" ( (binary_expression "puVar15 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "operator_delete(*(void **)(puVar15 + -0x14));" (call_expression "operator_delete(*(void **)(puVar15 + -0x14))" identifier (argument_list "(*(void **)(puVar15 + -0x14))" ( (pointer_expression "*(void **)(puVar15 + -0x14)" * (cast_expression "(void **)(puVar15 + -0x14)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) ))) ;) (expression_statement "puVar16 = puVar15 + -4;" (assignment_expression "puVar16 = puVar15 + -4" identifier = (binary_expression "puVar15 + -4" identifier + number_literal)) ;) })) })) }) (else_clause "else {\n    local_34.object = (Relobj *)0x0;\n    *(Merged_strings_list **)(puVar15 + -0xc) = &local_34;\n    *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n    local_34.shndx = 0;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c86bd;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n    this->input_count_ = this->input_count_ + local_7c;\n  }" else (compound_statement "{\n    local_34.object = (Relobj *)0x0;\n    *(Merged_strings_list **)(puVar15 + -0xc) = &local_34;\n    *(Merged_strings **)(puVar15 + -0x10) = local_5c;\n    local_34.shndx = 0;\n    *(undefined4 *)(puVar15 + -0x14) = 0x1c86bd;\n    std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));\n    this->input_count_ = this->input_count_ + local_7c;\n  }" { (expression_statement "local_34.object = (Relobj *)0x0;" (assignment_expression "local_34.object = (Relobj *)0x0" (field_expression "local_34.object" identifier . field_identifier) = (cast_expression "(Relobj *)0x0" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(Merged_strings_list **)(puVar15 + -0xc) = &local_34;" (assignment_expression "*(Merged_strings_list **)(puVar15 + -0xc) = &local_34" (pointer_expression "*(Merged_strings_list **)(puVar15 + -0xc)" * (cast_expression "(Merged_strings_list **)(puVar15 + -0xc)" ( (type_descriptor "Merged_strings_list **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "*(Merged_strings **)(puVar15 + -0x10) = local_5c;" (assignment_expression "*(Merged_strings **)(puVar15 + -0x10) = local_5c" (pointer_expression "*(Merged_strings **)(puVar15 + -0x10)" * (cast_expression "(Merged_strings **)(puVar15 + -0x10)" ( (type_descriptor "Merged_strings **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_34.shndx = 0;" (assignment_expression "local_34.shndx = 0" (field_expression "local_34.shndx" identifier . field_identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x1c86bd;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x1c86bd" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "std::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>::Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));" statement_identifier (ERROR "::\n    vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n    ::emplace_back<gold::Output_merge_string<char>:" : : (binary_expression "vector<gold" identifier < identifier) : : (binary_expression "Output_merge_string<char" identifier < identifier) > : : (comma_expression "Merged_string,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Output_merge_string<char" identifier < identifier) > : : (binary_expression "Merged_string>_" identifier > identifier) > : : (binary_expression "emplace_back<gold" identifier < identifier) : : (binary_expression "Output_merge_string<char" identifier < identifier) > :) : (expression_statement "Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc));" (binary_expression "Merged_string>\n              (*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc))" identifier > (parenthesized_expression "(*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc))" ( (comma_expression "*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10),*(Merged_string **)(puVar15 + -0xc)" (pointer_expression "*(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10)" * (call_expression "(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)(puVar15 + -0x10)" (parenthesized_expression "(vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::Output_merge_string<char>::Merged_string>_>\n                 **)" ( (ERROR "vector<gold::Output_merge_string<char>::Merged_string,_std::allocator<gold::" (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Output_merge_string<char>::Merged_string,_std" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_merge_string<char>::Merged_string>_>\n                 **" (binary_expression "Output_merge_string<char>::Merged_string>_" (binary_expression "Output_merge_string<char>::Merged_string" (binary_expression "Output_merge_string<char" identifier < identifier) > (ERROR "::" : :) identifier) > identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(Merged_string **)(puVar15 + -0xc)" * (cast_expression "(Merged_string **)(puVar15 + -0xc)" ( (type_descriptor "Merged_string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) ))))) ))) ;)) (expression_statement "this->input_count_ = this->input_count_ + local_7c;" (assignment_expression "this->input_count_ = this->input_count_ + local_7c" (field_expression "this->input_count_" identifier -> field_identifier) = (binary_expression "this->input_count_ + local_7c" (field_expression "this->input_count_" identifier -> field_identifier) + identifier)) ;) }))) (if_statement "if ((this->super_Output_merge_base).keeps_input_sections_ != false) {\n    *(uint *)(puVar16 + -8) = shndx;\n    *(Relobj **)(puVar16 + -0xc) = object;\n    *(Output_merge_string<char> **)(puVar16 + -0x10) = this;\n    *(undefined4 *)(puVar16 + -0x14) = 0x1c85af;\n    Output_merge_base::record_input_section\n              (*(Output_merge_base **)(puVar16 + -0x10),*(Relobj **)(puVar16 + -0xc),\n               *(uint *)(puVar16 + -8));\n  }" if (parenthesized_expression "((this->super_Output_merge_base).keeps_input_sections_ != false)" ( (binary_expression "(this->super_Output_merge_base).keeps_input_sections_ != false" (field_expression "(this->super_Output_merge_base).keeps_input_sections_" (parenthesized_expression "(this->super_Output_merge_base)" ( (field_expression "this->super_Output_merge_base" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n    *(uint *)(puVar16 + -8) = shndx;\n    *(Relobj **)(puVar16 + -0xc) = object;\n    *(Output_merge_string<char> **)(puVar16 + -0x10) = this;\n    *(undefined4 *)(puVar16 + -0x14) = 0x1c85af;\n    Output_merge_base::record_input_section\n              (*(Output_merge_base **)(puVar16 + -0x10),*(Relobj **)(puVar16 + -0xc),\n               *(uint *)(puVar16 + -8));\n  }" { (expression_statement "*(uint *)(puVar16 + -8) = shndx;" (assignment_expression "*(uint *)(puVar16 + -8) = shndx" (pointer_expression "*(uint *)(puVar16 + -8)" * (cast_expression "(uint *)(puVar16 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(Relobj **)(puVar16 + -0xc) = object;" (assignment_expression "*(Relobj **)(puVar16 + -0xc) = object" (pointer_expression "*(Relobj **)(puVar16 + -0xc)" * (cast_expression "(Relobj **)(puVar16 + -0xc)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(Output_merge_string<char> **)(puVar16 + -0x10) = this;" (assignment_expression "*(Output_merge_string<char> **)(puVar16 + -0x10) = this" (pointer_expression "*(Output_merge_string<char> **)(puVar16 + -0x10)" * (call_expression "(Output_merge_string<char> **)(puVar16 + -0x10)" (parenthesized_expression "(Output_merge_string<char> **)" ( (binary_expression "Output_merge_string<char> **" (binary_expression "Output_merge_string<char" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x1c85af;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x1c85af" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "Output_merge_base::record_input_section\n              (*(Output_merge_base **)(puVar16 + -0x10),*(Relobj **)(puVar16 + -0xc),\n               *(uint *)(puVar16 + -8));" statement_identifier : (ERROR ":" :) (expression_statement "record_input_section\n              (*(Output_merge_base **)(puVar16 + -0x10),*(Relobj **)(puVar16 + -0xc),\n               *(uint *)(puVar16 + -8));" (call_expression "record_input_section\n              (*(Output_merge_base **)(puVar16 + -0x10),*(Relobj **)(puVar16 + -0xc),\n               *(uint *)(puVar16 + -8))" identifier (argument_list "(*(Output_merge_base **)(puVar16 + -0x10),*(Relobj **)(puVar16 + -0xc),\n               *(uint *)(puVar16 + -8))" ( (pointer_expression "*(Output_merge_base **)(puVar16 + -0x10)" * (cast_expression "(Output_merge_base **)(puVar16 + -0x10)" ( (type_descriptor "Output_merge_base **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(Relobj **)(puVar16 + -0xc)" * (cast_expression "(Relobj **)(puVar16 + -0xc)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(uint *)(puVar16 + -8)" * (cast_expression "(uint *)(puVar16 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) ))) ;)) })) (if_statement "if ((is_new != false) && (local_78 != (uchar *)0x0)) {\n    *(uchar **)(puVar16 + -0x10) = local_78;\n    *(undefined4 *)(puVar16 + -0x14) = 0x1c857f;\n    operator_delete__(*(void **)(puVar16 + -0x10));\n  }" if (parenthesized_expression "((is_new != false) && (local_78 != (uchar *)0x0))" ( (binary_expression "(is_new != false) && (local_78 != (uchar *)0x0)" (parenthesized_expression "(is_new != false)" ( (binary_expression "is_new != false" identifier != false) )) && (parenthesized_expression "(local_78 != (uchar *)0x0)" ( (binary_expression "local_78 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    *(uchar **)(puVar16 + -0x10) = local_78;\n    *(undefined4 *)(puVar16 + -0x14) = 0x1c857f;\n    operator_delete__(*(void **)(puVar16 + -0x10));\n  }" { (expression_statement "*(uchar **)(puVar16 + -0x10) = local_78;" (assignment_expression "*(uchar **)(puVar16 + -0x10) = local_78" (pointer_expression "*(uchar **)(puVar16 + -0x10)" * (cast_expression "(uchar **)(puVar16 + -0x10)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x1c857f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x1c857f" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "operator_delete__(*(void **)(puVar16 + -0x10));" (call_expression "operator_delete__(*(void **)(puVar16 + -0x10))" identifier (argument_list "(*(void **)(puVar16 + -0x10))" ( (pointer_expression "*(void **)(puVar16 + -0x10)" * (cast_expression "(void **)(puVar16 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) ))) ;) })) (return_statement "return true;" return true ;) })))
(translation_unit "undefined4 FUN_001c8240(int *param_1,int *param_2,undefined1 *param_3)\n\n{\n  char *pcVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined1 **ppuVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  undefined1 uVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined1 *puVar12;\n  undefined1 *puVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  undefined1 **ppuVar16;\n  uint uVar17;\n  undefined4 *puVar18;\n  undefined1 auStack_80 [4];\n  uint local_7c;\n  uint local_78;\n  uint local_74;\n  uint local_70;\n  undefined4 *local_6c;\n  int *local_68;\n  uint local_64;\n  undefined1 **local_60;\n  undefined1 **local_5c;\n  uint local_58;\n  undefined **local_54;\n  uint local_50;\n  char local_49;\n  int local_48;\n  undefined1 **local_44;\n  undefined4 local_40;\n  undefined8 local_3c;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  local_54 = &__DT_PLTGOT;\n  if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }\n  else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }\n  local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);\n  local_58 = local_78 + local_48;\n  puVar14 = &local_7c;\n  if (*(char *)(local_58 - 1) == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }\n  else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    \n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }\n  *(undefined4 *)(puVar12 + -0x10) = 0x14;\n  *(undefined4 *)(puVar12 + -0x14) = 0x1c8350;\n  local_44 = (undefined1 **)FUN_001e5200();\n  local_44[2] = (undefined1 *)0x0;\n  *local_44 = (undefined1 *)param_2;\n  local_44[3] = (undefined1 *)0x0;\n  puVar8 = (undefined4 *)param_1[0x2b];\n  local_44[1] = param_3;\n  local_44[4] = (undefined1 *)0x0;\n  if (puVar8 == (undefined4 *)param_1[0x2c]) {\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }\n  else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }\n  local_5c = local_44 + 2;\n  if (local_78 < local_50) {\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }\n  else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }\n  for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }\n  if (puVar11 != (undefined4 *)0x0) {\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }\n  ppuVar16[2] = (undefined1 *)local_60;\n  ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);\n  ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);\nLAB_001c8419:\n  uVar10 = local_50;\n  local_74 = (int)local_3c - 1U & local_78;\n  puVar13 = puVar12;\n  if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }\n  else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }\n  if ((char)param_1[0xd] != '\0') {\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }\n  if ((local_49 != '\0') && (local_78 != 0)) {\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_001c8240(int *param_1,int *param_2,undefined1 *param_3)\n\n{\n  char *pcVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined1 **ppuVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  undefined1 uVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined1 *puVar12;\n  undefined1 *puVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  undefined1 **ppuVar16;\n  uint uVar17;\n  undefined4 *puVar18;\n  undefined1 auStack_80 [4];\n  uint local_7c;\n  uint local_78;\n  uint local_74;\n  uint local_70;\n  undefined4 *local_6c;\n  int *local_68;\n  uint local_64;\n  undefined1 **local_60;\n  undefined1 **local_5c;\n  uint local_58;\n  undefined **local_54;\n  uint local_50;\n  char local_49;\n  int local_48;\n  undefined1 **local_44;\n  undefined4 local_40;\n  undefined8 local_3c;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  local_54 = &__DT_PLTGOT;\n  if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }\n  else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }\n  local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);\n  local_58 = local_78 + local_48;\n  puVar14 = &local_7c;\n  if (*(char *)(local_58 - 1) == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }\n  else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    \n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }\n  *(undefined4 *)(puVar12 + -0x10) = 0x14;\n  *(undefined4 *)(puVar12 + -0x14) = 0x1c8350;\n  local_44 = (undefined1 **)FUN_001e5200();\n  local_44[2] = (undefined1 *)0x0;\n  *local_44 = (undefined1 *)param_2;\n  local_44[3] = (undefined1 *)0x0;\n  puVar8 = (undefined4 *)param_1[0x2b];\n  local_44[1] = param_3;\n  local_44[4] = (undefined1 *)0x0;\n  if (puVar8 == (undefined4 *)param_1[0x2c]) {\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }\n  else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }\n  local_5c = local_44 + 2;\n  if (local_78 < local_50) {\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }\n  else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }\n  for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }\n  if (puVar11 != (undefined4 *)0x0) {\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }\n  ppuVar16[2] = (undefined1 *)local_60;\n  ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);\n  ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);\nLAB_001c8419:\n  uVar10 = local_50;\n  local_74 = (int)local_3c - 1U & local_78;\n  puVar13 = puVar12;\n  if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }\n  else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }\n  if ((char)param_1[0xd] != '\0') {\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }\n  if ((local_49 != '\0') && (local_78 != 0)) {\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_001c8240(int *param_1,int *param_2,undefined1 *param_3)" identifier (parameter_list "(int *param_1,int *param_2,undefined1 *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined1 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined1 **ppuVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  undefined1 uVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined1 *puVar12;\n  undefined1 *puVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  undefined1 **ppuVar16;\n  uint uVar17;\n  undefined4 *puVar18;\n  undefined1 auStack_80 [4];\n  uint local_7c;\n  uint local_78;\n  uint local_74;\n  uint local_70;\n  undefined4 *local_6c;\n  int *local_68;\n  uint local_64;\n  undefined1 **local_60;\n  undefined1 **local_5c;\n  uint local_58;\n  undefined **local_54;\n  uint local_50;\n  char local_49;\n  int local_48;\n  undefined1 **local_44;\n  undefined4 local_40;\n  undefined8 local_3c;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  local_54 = &__DT_PLTGOT;\n  if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }\n  else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }\n  local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);\n  local_58 = local_78 + local_48;\n  puVar14 = &local_7c;\n  if (*(char *)(local_58 - 1) == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }\n  else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    \n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }\n  *(undefined4 *)(puVar12 + -0x10) = 0x14;\n  *(undefined4 *)(puVar12 + -0x14) = 0x1c8350;\n  local_44 = (undefined1 **)FUN_001e5200();\n  local_44[2] = (undefined1 *)0x0;\n  *local_44 = (undefined1 *)param_2;\n  local_44[3] = (undefined1 *)0x0;\n  puVar8 = (undefined4 *)param_1[0x2b];\n  local_44[1] = param_3;\n  local_44[4] = (undefined1 *)0x0;\n  if (puVar8 == (undefined4 *)param_1[0x2c]) {\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }\n  else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }\n  local_5c = local_44 + 2;\n  if (local_78 < local_50) {\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }\n  else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }\n  for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }\n  if (puVar11 != (undefined4 *)0x0) {\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }\n  ppuVar16[2] = (undefined1 *)local_60;\n  ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);\n  ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);\nLAB_001c8419:\n  uVar10 = local_50;\n  local_74 = (int)local_3c - 1U & local_78;\n  puVar13 = puVar12;\n  if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }\n  else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }\n  if ((char)param_1[0xd] != '\0') {\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }\n  if ((local_49 != '\0') && (local_78 != 0)) {\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }\n  return 1;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined1 **ppuVar4;" type_identifier (pointer_declarator "**ppuVar4" * (pointer_declarator "*ppuVar4" * identifier)) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "undefined1 uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 **ppuVar16;" type_identifier (pointer_declarator "**ppuVar16" * (pointer_declarator "*ppuVar16" * identifier)) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined1 auStack_80 [4];" type_identifier (array_declarator "auStack_80 [4]" identifier [ number_literal ]) ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "uint local_74;" type_identifier identifier ;) (declaration "uint local_70;" type_identifier identifier ;) (declaration "undefined4 *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "int *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "undefined1 **local_60;" type_identifier (pointer_declarator "**local_60" * (pointer_declarator "*local_60" * identifier)) ;) (declaration "undefined1 **local_5c;" type_identifier (pointer_declarator "**local_5c" * (pointer_declarator "*local_5c" * identifier)) ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "undefined **local_54;" type_identifier (pointer_declarator "**local_54" * (pointer_declarator "*local_54" * identifier)) ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "char local_49;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined1 **local_44;" type_identifier (pointer_declarator "**local_44" * (pointer_declarator "*local_44" * identifier)) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined8 local_3c;" type_identifier identifier ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "local_54 = &__DT_PLTGOT;" (assignment_expression "local_54 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }\n  else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0xc) == FUN_000735e0)" ( (binary_expression "*(code **)(*param_1 + 0xc) == FUN_000735e0" (pointer_expression "*(code **)(*param_1 + 0xc)" * (cast_expression "(code **)(*param_1 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }" { (expression_statement "local_3c = *(undefined8 *)(param_1 + 9);" (assignment_expression "local_3c = *(undefined8 *)(param_1 + 9)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 9)" * (cast_expression "(undefined8 *)(param_1 + 9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }" else (compound_statement "{\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }" { (expression_statement "local_3c = (**(code **)(*param_1 + 0xc))(param_1);" (assignment_expression "local_3c = (**(code **)(*param_1 + 0xc))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0xc))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xc))" ( (pointer_expression "**(code **)(*param_1 + 0xc)" * (pointer_expression "*(code **)(*param_1 + 0xc)" * (cast_expression "(code **)(*param_1 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (expression_statement "local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);" (assignment_expression "local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c)" identifier = (call_expression "FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c)" identifier (argument_list "(param_2,param_3,&local_48,&local_49,&local_3c)" ( identifier , identifier , (pointer_expression "&local_48" & identifier) , (pointer_expression "&local_49" & identifier) , (pointer_expression "&local_3c" & identifier) )))) ;) (expression_statement "local_58 = local_78 + local_48;" (assignment_expression "local_58 = local_78 + local_48" identifier = (binary_expression "local_78 + local_48" identifier + identifier)) ;) (expression_statement "puVar14 = &local_7c;" (assignment_expression "puVar14 = &local_7c" identifier = (pointer_expression "&local_7c" & identifier)) ;) (if_statement "if (*(char *)(local_58 - 1) == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }\n  else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    \n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }" if (parenthesized_expression "(*(char *)(local_58 - 1) == '\0')" ( (binary_expression "*(char *)(local_58 - 1) == '\0'" (pointer_expression "*(char *)(local_58 - 1)" * (cast_expression "(char *)(local_58 - 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 - 1)" ( (binary_expression "local_58 - 1" identifier - number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }" { (labeled_statement "LAB_001c8590:\n    local_50 = local_58;" statement_identifier : (expression_statement "local_50 = local_58;" (assignment_expression "local_50 = local_58" identifier = identifier) ;)) (expression_statement "puVar12 = (undefined1 *)puVar14;" (assignment_expression "puVar12 = (undefined1 *)puVar14" identifier = (cast_expression "(undefined1 *)puVar14" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    \n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }" else (compound_statement "{\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    \n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }" { (expression_statement "(**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);" (call_expression "(**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3)" (parenthesized_expression "(**(code **)(*param_2 + 0x40))" ( (pointer_expression "**(code **)(*param_2 + 0x40)" * (pointer_expression "*(code **)(*param_2 + 0x40)" * (cast_expression "(code **)(*param_2 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x40)" ( (binary_expression "*param_2 + 0x40" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(&local_34,param_2,param_3)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier ))) ;) (expression_statement "puVar12 = local_34;" (assignment_expression "puVar12 = local_34" identifier = identifier) ;) (expression_statement "iVar2 = param_2[1];" (assignment_expression "iVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = gettext(local_54 + -0x3bc00);" (assignment_expression "uVar5 = gettext(local_54 + -0x3bc00)" identifier = (call_expression "gettext(local_54 + -0x3bc00)" identifier (argument_list "(local_54 + -0x3bc00)" ( (binary_expression "local_54 + -0x3bc00" identifier + number_literal) )))) ;) (expression_statement "FUN_000654e0(uVar5,iVar2,puVar12);" (call_expression "FUN_000654e0(uVar5,iVar2,puVar12)" identifier (argument_list "(uVar5,iVar2,puVar12)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n      FUN_001e6db0(local_34);\n    }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (expression_statement "puVar12 = auStack_80;" (assignment_expression "puVar12 = auStack_80" identifier = identifier) ;) (expression_statement "puVar14 = (uint *)auStack_80;" (assignment_expression "puVar14 = (uint *)auStack_80" identifier = (cast_expression "(uint *)auStack_80" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;" if (parenthesized_expression "((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))" ( (binary_expression "(local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0')" (parenthesized_expression "(local_58 <= local_78)" ( (binary_expression "local_58 <= local_78" identifier <= identifier) )) || (parenthesized_expression "(puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0')" ( (comma_expression "puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'" (assignment_expression "puVar14 = (uint *)auStack_80" identifier = (cast_expression "(uint *)auStack_80" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (comma_expression "uVar10 = local_58, *(char *)(local_58 - 1) == '\0'" (assignment_expression "uVar10 = local_58" identifier = identifier) , (binary_expression "*(char *)(local_58 - 1) == '\0'" (pointer_expression "*(char *)(local_58 - 1)" * (cast_expression "(char *)(local_58 - 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 - 1)" ( (binary_expression "local_58 - 1" identifier - number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')))) ))) )) (goto_statement "goto LAB_001c8590;" goto statement_identifier ;)) (do_statement "do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');" do (compound_statement "{\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    }" { (expression_statement "local_50 = uVar10 - 1;" (assignment_expression "local_50 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (if_statement "if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }" if (parenthesized_expression "(local_78 == local_50)" ( (binary_expression "local_78 == local_50" identifier == identifier) )) (compound_statement "{\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }" { (expression_statement "local_50 = local_78;" (assignment_expression "local_50 = local_78" identifier = identifier) ;) (expression_statement "puVar12 = auStack_80;" (assignment_expression "puVar12 = auStack_80" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "pcVar1 = (char *)(uVar10 - 2);" (assignment_expression "pcVar1 = (char *)(uVar10 - 2)" identifier = (cast_expression "(char *)(uVar10 - 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 - 2)" ( (binary_expression "uVar10 - 2" identifier - number_literal) )))) ;) (expression_statement "uVar10 = local_50;" (assignment_expression "uVar10 = local_50" identifier = identifier) ;) }) while (parenthesized_expression "(*pcVar1 != '\0')" ( (binary_expression "*pcVar1 != '\0'" (pointer_expression "*pcVar1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) ;) }))) (expression_statement "*(undefined4 *)(puVar12 + -0x10) = 0x14;" (assignment_expression "*(undefined4 *)(puVar12 + -0x10) = 0x14" (pointer_expression "*(undefined4 *)(puVar12 + -0x10)" * (cast_expression "(undefined4 *)(puVar12 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8350;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8350" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_44 = (undefined1 **)FUN_001e5200();" (assignment_expression "local_44 = (undefined1 **)FUN_001e5200()" identifier = (cast_expression "(undefined1 **)FUN_001e5200()" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "FUN_001e5200()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_44[2] = (undefined1 *)0x0;" (assignment_expression "local_44[2] = (undefined1 *)0x0" (subscript_expression "local_44[2]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*local_44 = (undefined1 *)param_2;" (assignment_expression "*local_44 = (undefined1 *)param_2" (pointer_expression "*local_44" * identifier) = (cast_expression "(undefined1 *)param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_44[3] = (undefined1 *)0x0;" (assignment_expression "local_44[3] = (undefined1 *)0x0" (subscript_expression "local_44[3]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar8 = (undefined4 *)param_1[0x2b];" (assignment_expression "puVar8 = (undefined4 *)param_1[0x2b]" identifier = (cast_expression "(undefined4 *)param_1[0x2b]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x2b]" identifier [ number_literal ]))) ;) (expression_statement "local_44[1] = param_3;" (assignment_expression "local_44[1] = param_3" (subscript_expression "local_44[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_44[4] = (undefined1 *)0x0;" (assignment_expression "local_44[4] = (undefined1 *)0x0" (subscript_expression "local_44[4]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (puVar8 == (undefined4 *)param_1[0x2c]) {\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }\n  else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }" if (parenthesized_expression "(puVar8 == (undefined4 *)param_1[0x2c])" ( (binary_expression "puVar8 == (undefined4 *)param_1[0x2c]" identifier == (cast_expression "(undefined4 *)param_1[0x2c]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x2c]" identifier [ number_literal ]))) )) (compound_statement "{\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }" { (expression_statement "*(undefined1 ****)(puVar12 + -8) = &local_44;" (assignment_expression "*(undefined1 ****)(puVar12 + -8) = &local_44" (pointer_expression "*(undefined1 ****)(puVar12 + -8)" * (cast_expression "(undefined1 ****)(puVar12 + -8)" ( (type_descriptor "undefined1 ****" type_identifier (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))) ) (parenthesized_expression "(puVar12 + -8)" ( (binary_expression "puVar12 + -8" identifier + number_literal) )))) = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "*(undefined4 **)(puVar12 + -0xc) = puVar8;" (assignment_expression "*(undefined4 **)(puVar12 + -0xc) = puVar8" (pointer_expression "*(undefined4 **)(puVar12 + -0xc)" * (cast_expression "(undefined4 **)(puVar12 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar12 + -0x10) = param_1 + 0x2a;" (assignment_expression "*(int **)(puVar12 + -0x10) = param_1 + 0x2a" (pointer_expression "*(int **)(puVar12 + -0x10)" * (cast_expression "(int **)(puVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = (binary_expression "param_1 + 0x2a" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8696;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8696" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c6ec0();" (call_expression "FUN_001c6ec0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }" else (compound_statement "{\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }" { (expression_statement "*puVar8 = local_44;" (assignment_expression "*puVar8 = local_44" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "param_1[0x2b] = (int)(puVar8 + 1);" (assignment_expression "param_1[0x2b] = (int)(puVar8 + 1)" (subscript_expression "param_1[0x2b]" identifier [ number_literal ]) = (cast_expression "(int)(puVar8 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) )))) ;) }))) (expression_statement "local_5c = local_44 + 2;" (assignment_expression "local_5c = local_44 + 2" identifier = (binary_expression "local_44 + 2" identifier + number_literal)) ;) (if_statement "if (local_78 < local_50) {\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }\n  else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }" if (parenthesized_expression "(local_78 < local_50)" ( (binary_expression "local_78 < local_50" identifier < identifier) )) (compound_statement "{\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }" { (expression_statement "local_60 = local_44;" (assignment_expression "local_60 = local_44" identifier = identifier) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = local_78;" (assignment_expression "uVar10 = local_78" identifier = identifier) ;) (do_statement "do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);" do (compound_statement "{\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    }" { (expression_statement "*(uint *)(puVar12 + -0x10) = uVar10;" (assignment_expression "*(uint *)(puVar12 + -0x10) = uVar10" (pointer_expression "*(uint *)(puVar12 + -0x10)" * (cast_expression "(uint *)(puVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c83cc" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "sVar6 = strlen(*(char **)(puVar12 + -0x10));" (assignment_expression "sVar6 = strlen(*(char **)(puVar12 + -0x10))" identifier = (call_expression "strlen(*(char **)(puVar12 + -0x10))" identifier (argument_list "(*(char **)(puVar12 + -0x10))" ( (pointer_expression "*(char **)(puVar12 + -0x10)" * (cast_expression "(char **)(puVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "ppuVar16 = local_60;" (assignment_expression "ppuVar16 = local_60" identifier = identifier) ;) (expression_statement "uVar9 = uVar17 + 1;" (assignment_expression "uVar9 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (if_statement "if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }" if (parenthesized_expression "(sVar6 != 0)" ( (binary_expression "sVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }" { (expression_statement "uVar9 = uVar17 + 2;" (assignment_expression "uVar9 = uVar17 + 2" identifier = (binary_expression "uVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar10 = uVar10 + 1 + sVar6;" (assignment_expression "uVar10 = uVar10 + 1 + sVar6" identifier = (binary_expression "uVar10 + 1 + sVar6" (binary_expression "uVar10 + 1" identifier + number_literal) + identifier)) ;) }) while (parenthesized_expression "(uVar10 < local_50)" ( (binary_expression "uVar10 < local_50" identifier < identifier) )) ;) (expression_statement "uVar10 = uVar9;" (assignment_expression "uVar10 = uVar9" identifier = identifier) ;) (expression_statement "local_7c = uVar17;" (assignment_expression "local_7c = uVar17" identifier = identifier) ;) (if_statement "if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }" if (parenthesized_expression "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) )) (compound_statement "{\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }" { (expression_statement "uVar10 = uVar9 + 1;" (assignment_expression "uVar10 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "local_7c = uVar9;" (assignment_expression "local_7c = uVar9" identifier = identifier) ;) })) (if_statement "if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }" if (parenthesized_expression "(0x1fffffff < uVar10)" ( (binary_expression "0x1fffffff < uVar10" number_literal < identifier) )) (compound_statement "{\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }" { (expression_statement "*(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;" (assignment_expression "*(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d" (pointer_expression "*(int *)(puVar12 + -0x10)" * (cast_expression "(int *)(puVar12 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = (binary_expression "(int)local_54 + -0x10ea7d" (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;" (assignment_expression "*(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729" (pointer_expression "*(undefined1 **)(puVar12 + -0x14)" * (cast_expression "(undefined1 **)(puVar12 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = (pointer_expression "&LAB_001c8729" & identifier)) ;) (expression_statement "FUN_0022c7a0();" (call_expression "FUN_0022c7a0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puVar8 = (undefined4 *)local_60[2];" (assignment_expression "puVar8 = (undefined4 *)local_60[2]" identifier = (cast_expression "(undefined4 *)local_60[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_60[2]" identifier [ number_literal ]))) ;) (if_statement "if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;" if (parenthesized_expression "(uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3))" ( (binary_expression "uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)" identifier <= (call_expression "(uint)((int)local_60[4] - (int)puVar8 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)local_60[4] - (int)puVar8 >> 3)" ( (binary_expression "(int)local_60[4] - (int)puVar8 >> 3" (binary_expression "(int)local_60[4] - (int)puVar8" (cast_expression "(int)local_60[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_60[4]" identifier [ number_literal ])) - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) (goto_statement "goto LAB_001c8419;" goto statement_identifier ;)) (expression_statement "puVar18 = (undefined4 *)local_60[3];" (assignment_expression "puVar18 = (undefined4 *)local_60[3]" identifier = (cast_expression "(undefined4 *)local_60[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_60[3]" identifier [ number_literal ]))) ;) (expression_statement "local_68 = (int *)((int)puVar18 - (int)puVar8);" (assignment_expression "local_68 = (int *)((int)puVar18 - (int)puVar8)" identifier = (cast_expression "(int *)((int)puVar18 - (int)puVar8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 - (int)puVar8)" ( (binary_expression "(int)puVar18 - (int)puVar8" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_64 = uVar10 * 8;" (assignment_expression "local_64 = uVar10 * 8" identifier = (binary_expression "uVar10 * 8" identifier * number_literal)) ;) (if_statement "if (uVar10 != 0) goto LAB_001c85d4;" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c85d4;" goto statement_identifier ;)) (expression_statement "local_60 = (undefined1 **)0x0;" (assignment_expression "local_60 = (undefined1 **)0x0" identifier = (cast_expression "(undefined1 **)0x0" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "ppuVar4 = local_60;" (assignment_expression "ppuVar4 = local_60" identifier = identifier) ;) (expression_statement "puVar11 = puVar8;" (assignment_expression "puVar11 = puVar8" identifier = identifier) ;) }) (else_clause "else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }" else (compound_statement "{\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }" { (expression_statement "puVar8 = (undefined4 *)local_44[2];" (assignment_expression "puVar8 = (undefined4 *)local_44[2]" identifier = (cast_expression "(undefined4 *)local_44[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_44[2]" identifier [ number_literal ]))) ;) (expression_statement "local_7c = (uint)(local_50 < local_58);" (assignment_expression "local_7c = (uint)(local_50 < local_58)" identifier = (call_expression "(uint)(local_50 < local_58)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) )))) ;) (expression_statement "uVar10 = ~-(uint)(local_50 < local_58) + 2;" (assignment_expression "uVar10 = ~-(uint)(local_50 < local_58) + 2" identifier = (binary_expression "~-(uint)(local_50 < local_58) + 2" (unary_expression "~-(uint)(local_50 < local_58)" ~ (unary_expression "-(uint)(local_50 < local_58)" - (call_expression "(uint)(local_50 < local_58)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) ))))) + number_literal)) ;) (if_statement "if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;" if (parenthesized_expression "(uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3))" ( (binary_expression "uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)" identifier <= (call_expression "(uint)((int)local_44[4] - (int)puVar8 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)local_44[4] - (int)puVar8 >> 3)" ( (binary_expression "(int)local_44[4] - (int)puVar8 >> 3" (binary_expression "(int)local_44[4] - (int)puVar8" (cast_expression "(int)local_44[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_44[4]" identifier [ number_literal ])) - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) (goto_statement "goto LAB_001c8419;" goto statement_identifier ;)) (expression_statement "puVar18 = (undefined4 *)local_44[3];" (assignment_expression "puVar18 = (undefined4 *)local_44[3]" identifier = (cast_expression "(undefined4 *)local_44[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_44[3]" identifier [ number_literal ]))) ;) (expression_statement "local_64 = uVar10 * 8;" (assignment_expression "local_64 = uVar10 * 8" identifier = (binary_expression "uVar10 * 8" identifier * number_literal)) ;) (expression_statement "local_68 = (int *)((int)puVar18 - (int)puVar8);" (assignment_expression "local_68 = (int *)((int)puVar18 - (int)puVar8)" identifier = (cast_expression "(int *)((int)puVar18 - (int)puVar8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 - (int)puVar8)" ( (binary_expression "(int)puVar18 - (int)puVar8" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "ppuVar16 = local_44;" (assignment_expression "ppuVar16 = local_44" identifier = identifier) ;) (labeled_statement "LAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;" statement_identifier : (expression_statement "*(uint *)(puVar12 + -0x10) = local_64;" (assignment_expression "*(uint *)(puVar12 + -0x10) = local_64" (pointer_expression "*(uint *)(puVar12 + -0x10)" * (cast_expression "(uint *)(puVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c85e5" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_6c = puVar8;" (assignment_expression "local_6c = puVar8" identifier = identifier) ;) (expression_statement "local_60 = (undefined1 **)FUN_001e5200();" (assignment_expression "local_60 = (undefined1 **)FUN_001e5200()" identifier = (cast_expression "(undefined1 **)FUN_001e5200()" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "FUN_001e5200()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar8 = local_6c;" (assignment_expression "puVar8 = local_6c" identifier = identifier) ;) (expression_statement "ppuVar4 = local_60;" (assignment_expression "ppuVar4 = local_60" identifier = identifier) ;) (expression_statement "puVar11 = (undefined4 *)ppuVar16[2];" (assignment_expression "puVar11 = (undefined4 *)ppuVar16[2]" identifier = (cast_expression "(undefined4 *)ppuVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "ppuVar16[2]" identifier [ number_literal ]))) ;) }))) (for_statement "for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }" for ( ; (binary_expression "puVar8 != puVar18" identifier != identifier) ; (assignment_expression "puVar8 = puVar8 + 2" identifier = (binary_expression "puVar8 + 2" identifier + number_literal)) ) (compound_statement "{\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }" { (expression_statement "puVar13 = (undefined1 *)puVar8[1];" (assignment_expression "puVar13 = (undefined1 *)puVar8[1]" identifier = (cast_expression "(undefined1 *)puVar8[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "*ppuVar4 = (undefined1 *)*puVar8;" (assignment_expression "*ppuVar4 = (undefined1 *)*puVar8" (pointer_expression "*ppuVar4" * identifier) = (cast_expression "(undefined1 *)*puVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "ppuVar4[1] = puVar13;" (assignment_expression "ppuVar4[1] = puVar13" (subscript_expression "ppuVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_6c = puVar11;" (assignment_expression "local_6c = puVar11" identifier = identifier) ;) (expression_statement "ppuVar4 = ppuVar4 + 2;" (assignment_expression "ppuVar4 = ppuVar4 + 2" identifier = (binary_expression "ppuVar4 + 2" identifier + number_literal)) ;) })) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }" if (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" ( (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }" { (expression_statement "*(undefined4 **)(puVar12 + -0x10) = puVar11;" (assignment_expression "*(undefined4 **)(puVar12 + -0x10) = puVar11" (pointer_expression "*(undefined4 **)(puVar12 + -0x10)" * (cast_expression "(undefined4 **)(puVar12 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8628;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8628" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "ppuVar16[2] = (undefined1 *)local_60;" (assignment_expression "ppuVar16[2] = (undefined1 *)local_60" (subscript_expression "ppuVar16[2]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)local_60" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);" (assignment_expression "ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60)" (subscript_expression "ppuVar16[3]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)((int)local_68 + (int)local_60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_68 + (int)local_60)" ( (binary_expression "(int)local_68 + (int)local_60" (cast_expression "(int)local_68" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);" (assignment_expression "ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60)" (subscript_expression "ppuVar16[4]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)(local_64 + (int)local_60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + (int)local_60)" ( (binary_expression "local_64 + (int)local_60" identifier + (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (labeled_statement "LAB_001c8419:\n  uVar10 = local_50;" statement_identifier : (expression_statement "uVar10 = local_50;" (assignment_expression "uVar10 = local_50" identifier = identifier) ;)) (expression_statement "local_74 = (int)local_3c - 1U & local_78;" (assignment_expression "local_74 = (int)local_3c - 1U & local_78" identifier = (binary_expression "(int)local_3c - 1U & local_78" (binary_expression "(int)local_3c - 1U" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & identifier)) ;) (expression_statement "puVar13 = puVar12;" (assignment_expression "puVar13 = puVar12" identifier = identifier) ;) (if_statement "if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }\n  else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }" if (parenthesized_expression "(local_78 < local_58)" ( (binary_expression "local_78 < local_58" identifier < identifier) )) (compound_statement "{\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }" { (expression_statement "local_64 = local_64 & 0xffffff00;" (assignment_expression "local_64 = local_64 & 0xffffff00" identifier = (binary_expression "local_64 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "local_68 = param_1 + 0x17;" (assignment_expression "local_68 = param_1 + 0x17" identifier = (binary_expression "param_1 + 0x17" identifier + number_literal)) ;) (expression_statement "local_60 = &local_34;" (assignment_expression "local_60 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_6c = &local_40;" (assignment_expression "local_6c = &local_40" identifier = (pointer_expression "&local_40" & identifier)) ;) (expression_statement "local_50 = local_78;" (assignment_expression "local_50 = local_78" identifier = identifier) ;) (expression_statement "local_70 = uVar10;" (assignment_expression "local_70 = uVar10" identifier = identifier) ;) (expression_statement "puVar15 = (undefined1 *)0x0;" (assignment_expression "puVar15 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);" do (compound_statement "{\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    }" { (expression_statement "sVar6 = local_58 - local_50;" (assignment_expression "sVar6 = local_58 - local_50" identifier = (binary_expression "local_58 - local_50" identifier - identifier)) ;) (if_statement "if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }" if (parenthesized_expression "(local_50 < local_70)" ( (binary_expression "local_50 < local_70" identifier < identifier) )) (compound_statement "{\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }" { (expression_statement "*(uint *)(puVar12 + -0x10) = local_50;" (assignment_expression "*(uint *)(puVar12 + -0x10) = local_50" (pointer_expression "*(uint *)(puVar12 + -0x10)" * (cast_expression "(uint *)(puVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8471;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8471" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "sVar6 = strlen(*(char **)(puVar12 + -0x10));" (assignment_expression "sVar6 = strlen(*(char **)(puVar12 + -0x10))" identifier = (call_expression "strlen(*(char **)(puVar12 + -0x10))" identifier (argument_list "(*(char **)(puVar12 + -0x10))" ( (pointer_expression "*(char **)(puVar12 + -0x10)" * (cast_expression "(char **)(puVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) )))) ;) })) (if_statement "if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }" if (parenthesized_expression "(sVar6 != 0)" ( (binary_expression "sVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }" { (expression_statement "uVar7 = (char)local_64;" (assignment_expression "uVar7 = (char)local_64" identifier = (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }" if (parenthesized_expression "(((int)local_3c - 1U & local_50) != local_74)" ( (binary_expression "((int)local_3c - 1U & local_50) != local_74" (parenthesized_expression "((int)local_3c - 1U & local_50)" ( (binary_expression "(int)local_3c - 1U & local_50" (binary_expression "(int)local_3c - 1U" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & identifier) )) != identifier) )) (compound_statement "{\n          uVar7 = 1;\n        }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) })) (expression_statement "local_64 = CONCAT31(local_64._1_3_,uVar7);" (assignment_expression "local_64 = CONCAT31(local_64._1_3_,uVar7)" identifier = (call_expression "CONCAT31(local_64._1_3_,uVar7)" identifier (argument_list "(local_64._1_3_,uVar7)" ( (field_expression "local_64._1_3_" identifier . field_identifier) , identifier )))) ;) })) (expression_statement "*(undefined4 **)(puVar12 + -0x10) = local_6c;" (assignment_expression "*(undefined4 **)(puVar12 + -0x10) = local_6c" (pointer_expression "*(undefined4 **)(puVar12 + -0x10)" * (cast_expression "(undefined4 **)(puVar12 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 1;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 1" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(size_t *)(puVar12 + -0x18) = sVar6;" (assignment_expression "*(size_t *)(puVar12 + -0x18) = sVar6" (pointer_expression "*(size_t *)(puVar12 + -0x18)" * (cast_expression "(size_t *)(puVar12 + -0x18)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x18)" ( (binary_expression "puVar12 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar12 + -0x1c) = local_50;" (assignment_expression "*(uint *)(puVar12 + -0x1c) = local_50" (pointer_expression "*(uint *)(puVar12 + -0x1c)" * (cast_expression "(uint *)(puVar12 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x1c)" ( (binary_expression "puVar12 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar12 + -0x20) = local_68;" (assignment_expression "*(int **)(puVar12 + -0x20) = local_68" (pointer_expression "*(int **)(puVar12 + -0x20)" * (cast_expression "(int **)(puVar12 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x20)" ( (binary_expression "puVar12 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;" (assignment_expression "*(undefined4 *)(puVar12 + -0x24) = 0x1c84ac" (pointer_expression "*(undefined4 *)(puVar12 + -0x24)" * (cast_expression "(undefined4 *)(puVar12 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x24)" ( (binary_expression "puVar12 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00174780();" (call_expression "FUN_00174780()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0xc) = local_60;" (assignment_expression "*(undefined1 ***)(puVar12 + -0xc) = local_60" (pointer_expression "*(undefined1 ***)(puVar12 + -0xc)" * (cast_expression "(undefined1 ***)(puVar12 + -0xc)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = local_5c;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = local_5c" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" * (cast_expression "(undefined1 ***)(puVar12 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_30 = local_40;" (assignment_expression "local_30 = local_40" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c84c3" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_34 = puVar15;" (assignment_expression "local_34 = puVar15" identifier = identifier) ;) (expression_statement "FUN_001c7520();" (call_expression "FUN_001c7520()" identifier (argument_list "()" ( ))) ;) (expression_statement "ppuVar16 = local_60;" (assignment_expression "ppuVar16 = local_60" identifier = identifier) ;) (expression_statement "local_50 = local_50 + sVar6 + 1;" (assignment_expression "local_50 = local_50 + sVar6 + 1" identifier = (binary_expression "local_50 + sVar6 + 1" (binary_expression "local_50 + sVar6" identifier + identifier) + number_literal)) ;) (expression_statement "puVar15 = puVar15 + sVar6 + 1;" (assignment_expression "puVar15 = puVar15 + sVar6 + 1" identifier = (binary_expression "puVar15 + sVar6 + 1" (binary_expression "puVar15 + sVar6" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(local_50 < local_58)" ( (binary_expression "local_50 < local_58" identifier < identifier) )) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0xc) = local_60;" (assignment_expression "*(undefined1 ***)(puVar12 + -0xc) = local_60" (pointer_expression "*(undefined1 ***)(puVar12 + -0xc)" * (cast_expression "(undefined1 ***)(puVar12 + -0xc)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = local_5c;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = local_5c" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" * (cast_expression "(undefined1 ***)(puVar12 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c84ef" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_34 = puVar15;" (assignment_expression "local_34 = puVar15" identifier = identifier) ;) (expression_statement "FUN_001c7520();" (call_expression "FUN_001c7520()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[0x2d] = param_1[0x2d] + local_7c;" (assignment_expression "param_1[0x2d] = param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) = (binary_expression "param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);" (assignment_expression "param_1[0x2e] = (int)(puVar15 + param_1[0x2e])" (subscript_expression "param_1[0x2e]" identifier [ number_literal ]) = (cast_expression "(int)(puVar15 + param_1[0x2e])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar15 + param_1[0x2e])" ( (binary_expression "puVar15 + param_1[0x2e]" identifier + (subscript_expression "param_1[0x2e]" identifier [ number_literal ])) )))) ;) (if_statement "if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }" if (parenthesized_expression "((char)local_64 != '\0')" ( (binary_expression "(char)local_64 != '\0'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }" { (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined1 **)(puVar12 + -8) = param_3;" (assignment_expression "*(undefined1 **)(puVar12 + -8) = param_3" (pointer_expression "*(undefined1 **)(puVar12 + -8)" * (cast_expression "(undefined1 **)(puVar12 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -8)" ( (binary_expression "puVar12 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar12 + -0xc) = param_2;" (assignment_expression "*(int **)(puVar12 + -0xc) = param_2" (pointer_expression "*(int **)(puVar12 + -0xc)" * (cast_expression "(int **)(puVar12 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = ppuVar16;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = ppuVar16" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" * (cast_expression "(undefined1 ***)(puVar12 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar2 + 0x40);" (assignment_expression "pcVar3 = *(code **)(iVar2 + 0x40)" identifier = (pointer_expression "*(code **)(iVar2 + 0x40)" * (cast_expression "(code **)(iVar2 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x40)" ( (binary_expression "iVar2 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c851c;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c851c" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar13 = local_34;" (assignment_expression "puVar13 = local_34" identifier = identifier) ;) (expression_statement "iVar2 = param_2[1];" (assignment_expression "iVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;" (assignment_expression "*(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef" (pointer_expression "*(undefined ***)(puVar12 + -0x14)" * (cast_expression "(undefined ***)(puVar12 + -0x14)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = (binary_expression "local_54 + -0x3bbef" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x18) = 0x1c8534;" (assignment_expression "*(undefined4 *)(puVar12 + -0x18) = 0x1c8534" (pointer_expression "*(undefined4 *)(puVar12 + -0x18)" * (cast_expression "(undefined4 *)(puVar12 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x18)" ( (binary_expression "puVar12 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar5 = gettext();" (assignment_expression "uVar5 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 **)(puVar12 + -0xc) = puVar13;" (assignment_expression "*(undefined1 **)(puVar12 + -0xc) = puVar13" (pointer_expression "*(undefined1 **)(puVar12 + -0xc)" * (cast_expression "(undefined1 **)(puVar12 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar12 + -0x10) = iVar2;" (assignment_expression "*(int *)(puVar12 + -0x10) = iVar2" (pointer_expression "*(int *)(puVar12 + -0x10)" * (cast_expression "(int *)(puVar12 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = uVar5;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = uVar5" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x18) = 0x1c8544;" (assignment_expression "*(undefined4 *)(puVar12 + -0x18) = 0x1c8544" (pointer_expression "*(undefined4 *)(puVar12 + -0x18)" * (cast_expression "(undefined4 *)(puVar12 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x18)" ( (binary_expression "puVar12 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000654e0();" (call_expression "FUN_000654e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar13 = puVar12 + -4;" (assignment_expression "puVar13 = puVar12 + -4" identifier = (binary_expression "puVar12 + -4" identifier + number_literal)) ;) (if_statement "if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }" { (expression_statement "*(undefined1 **)(puVar12 + -0x14) = local_34;" (assignment_expression "*(undefined1 **)(puVar12 + -0x14) = local_34" (pointer_expression "*(undefined1 **)(puVar12 + -0x14)" * (cast_expression "(undefined1 **)(puVar12 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x18) = 0x1c855a;" (assignment_expression "*(undefined4 *)(puVar12 + -0x18) = 0x1c855a" (pointer_expression "*(undefined4 *)(puVar12 + -0x18)" * (cast_expression "(undefined4 *)(puVar12 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x18)" ( (binary_expression "puVar12 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar13 = puVar12 + -4;" (assignment_expression "puVar13 = puVar12 + -4" identifier = (binary_expression "puVar12 + -4" identifier + number_literal)) ;) })) })) }) (else_clause "else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }" else (compound_statement "{\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }" { (expression_statement "local_34 = (undefined1 *)0x0;" (assignment_expression "local_34 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0xc) = &local_34;" (assignment_expression "*(undefined1 ***)(puVar12 + -0xc) = &local_34" (pointer_expression "*(undefined1 ***)(puVar12 + -0xc)" * (cast_expression "(undefined1 ***)(puVar12 + -0xc)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = local_5c;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = local_5c" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" * (cast_expression "(undefined1 ***)(puVar12 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c86bd" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c7520();" (call_expression "FUN_001c7520()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[0x2d] = param_1[0x2d] + local_7c;" (assignment_expression "param_1[0x2d] = param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) = (binary_expression "param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) + identifier)) ;) }))) (if_statement "if ((char)param_1[0xd] != '\0') {\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }" if (parenthesized_expression "((char)param_1[0xd] != '\0')" ( (binary_expression "(char)param_1[0xd] != '\0'" (cast_expression "(char)param_1[0xd]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0xd]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }" { (expression_statement "*(undefined1 **)(puVar13 + -8) = param_3;" (assignment_expression "*(undefined1 **)(puVar13 + -8) = param_3" (pointer_expression "*(undefined1 **)(puVar13 + -8)" * (cast_expression "(undefined1 **)(puVar13 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + -8)" ( (binary_expression "puVar13 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar13 + -0xc) = param_2;" (assignment_expression "*(int **)(puVar13 + -0xc) = param_2" (pointer_expression "*(int **)(puVar13 + -0xc)" * (cast_expression "(int **)(puVar13 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + -0xc)" ( (binary_expression "puVar13 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar13 + -0x10) = param_1;" (assignment_expression "*(int **)(puVar13 + -0x10) = param_1" (pointer_expression "*(int **)(puVar13 + -0x10)" * (cast_expression "(int **)(puVar13 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + -0x10)" ( (binary_expression "puVar13 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar13 + -0x14) = 0x1c85af;" (assignment_expression "*(undefined4 *)(puVar13 + -0x14) = 0x1c85af" (pointer_expression "*(undefined4 *)(puVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -0x14)" ( (binary_expression "puVar13 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001c5140();" (call_expression "FUN_001c5140()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((local_49 != '\0') && (local_78 != 0)) {\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }" if (parenthesized_expression "((local_49 != '\0') && (local_78 != 0))" ( (binary_expression "(local_49 != '\0') && (local_78 != 0)" (parenthesized_expression "(local_49 != '\0')" ( (binary_expression "local_49 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_78 != 0)" ( (binary_expression "local_78 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }" { (expression_statement "*(uint *)(puVar13 + -0x10) = local_78;" (assignment_expression "*(uint *)(puVar13 + -0x10) = local_78" (pointer_expression "*(uint *)(puVar13 + -0x10)" * (cast_expression "(uint *)(puVar13 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -0x10)" ( (binary_expression "puVar13 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar13 + -0x14) = 0x1c857f;" (assignment_expression "*(undefined4 *)(puVar13 + -0x14) = 0x1c857f" (pointer_expression "*(undefined4 *)(puVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -0x14)" ( (binary_expression "puVar13 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6d50();" (call_expression "FUN_001e6d50()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (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 * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (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 * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) == (char_literal ' escape_sequence ')))) ))) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (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) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (for_statement for ( ; (binary_expression IDENT != IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (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 = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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 != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) & IDENT) )) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = 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 IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + (subscript_expression IDENT [ 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 * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ 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 IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_001c8240(int *param_1,int *param_2,undefined1 *param_3)\n\n{\n  char *pcVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined1 **ppuVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  undefined1 uVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined1 *puVar12;\n  undefined1 *puVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  undefined1 **ppuVar16;\n  uint uVar17;\n  undefined4 *puVar18;\n  undefined1 auStack_80 [4];\n  uint local_7c;\n  uint local_78;\n  uint local_74;\n  uint local_70;\n  undefined4 *local_6c;\n  int *local_68;\n  uint local_64;\n  undefined1 **local_60;\n  undefined1 **local_5c;\n  uint local_58;\n  undefined **local_54;\n  uint local_50;\n  char local_49;\n  int local_48;\n  undefined1 **local_44;\n  undefined4 local_40;\n  undefined8 local_3c;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  local_54 = &__DT_PLTGOT;\n  if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }\n  else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }\n  local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);\n  local_58 = local_78 + local_48;\n  puVar14 = &local_7c;\n  if (*(char *)(local_58 - 1) == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }\n  else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    \n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }\n  *(undefined4 *)(puVar12 + -0x10) = 0x14;\n  *(undefined4 *)(puVar12 + -0x14) = 0x1c8350;\n  local_44 = (undefined1 **)FUN_001e5200();\n  local_44[2] = (undefined1 *)0x0;\n  *local_44 = (undefined1 *)param_2;\n  local_44[3] = (undefined1 *)0x0;\n  puVar8 = (undefined4 *)param_1[0x2b];\n  local_44[1] = param_3;\n  local_44[4] = (undefined1 *)0x0;\n  if (puVar8 == (undefined4 *)param_1[0x2c]) {\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }\n  else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }\n  local_5c = local_44 + 2;\n  if (local_78 < local_50) {\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }\n  else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }\n  for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }\n  if (puVar11 != (undefined4 *)0x0) {\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }\n  ppuVar16[2] = (undefined1 *)local_60;\n  ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);\n  ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);\nLAB_001c8419:\n  uVar10 = local_50;\n  local_74 = (int)local_3c - 1U & local_78;\n  puVar13 = puVar12;\n  if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }\n  else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }\n  if ((char)param_1[0xd] != '\0') {\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }\n  if ((local_49 != '\0') && (local_78 != 0)) {\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_001c8240(int *param_1,int *param_2,undefined1 *param_3)" (identifier "FUN_001c8240") (parameter_list "(int *param_1,int *param_2,undefined1 *param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined1 *param_3" (type_identifier "undefined1") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined1 **ppuVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  undefined1 uVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined1 *puVar12;\n  undefined1 *puVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  undefined1 **ppuVar16;\n  uint uVar17;\n  undefined4 *puVar18;\n  undefined1 auStack_80 [4];\n  uint local_7c;\n  uint local_78;\n  uint local_74;\n  uint local_70;\n  undefined4 *local_6c;\n  int *local_68;\n  uint local_64;\n  undefined1 **local_60;\n  undefined1 **local_5c;\n  uint local_58;\n  undefined **local_54;\n  uint local_50;\n  char local_49;\n  int local_48;\n  undefined1 **local_44;\n  undefined4 local_40;\n  undefined8 local_3c;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  local_54 = &__DT_PLTGOT;\n  if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }\n  else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }\n  local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);\n  local_58 = local_78 + local_48;\n  puVar14 = &local_7c;\n  if (*(char *)(local_58 - 1) == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }\n  else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    \n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }\n  *(undefined4 *)(puVar12 + -0x10) = 0x14;\n  *(undefined4 *)(puVar12 + -0x14) = 0x1c8350;\n  local_44 = (undefined1 **)FUN_001e5200();\n  local_44[2] = (undefined1 *)0x0;\n  *local_44 = (undefined1 *)param_2;\n  local_44[3] = (undefined1 *)0x0;\n  puVar8 = (undefined4 *)param_1[0x2b];\n  local_44[1] = param_3;\n  local_44[4] = (undefined1 *)0x0;\n  if (puVar8 == (undefined4 *)param_1[0x2c]) {\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }\n  else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }\n  local_5c = local_44 + 2;\n  if (local_78 < local_50) {\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }\n  else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }\n  for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }\n  if (puVar11 != (undefined4 *)0x0) {\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }\n  ppuVar16[2] = (undefined1 *)local_60;\n  ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);\n  ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);\nLAB_001c8419:\n  uVar10 = local_50;\n  local_74 = (int)local_3c - 1U & local_78;\n  puVar13 = puVar12;\n  if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }\n  else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }\n  if ((char)param_1[0xd] != '\0') {\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }\n  if ((local_49 != '\0') && (local_78 != 0)) {\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }\n  return 1;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined1 **ppuVar4;" (type_identifier "undefined1") (pointer_declarator "**ppuVar4" (* "*") (pointer_declarator "*ppuVar4" (* "*") (identifier "ppuVar4"))) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "undefined1 uVar7;" (type_identifier "undefined1") (identifier "uVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "undefined1 *puVar12;" (type_identifier "undefined1") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined1 *puVar13;" (type_identifier "undefined1") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "uint *puVar14;" (type_identifier "uint") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "undefined1 *puVar15;" (type_identifier "undefined1") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "undefined1 **ppuVar16;" (type_identifier "undefined1") (pointer_declarator "**ppuVar16" (* "*") (pointer_declarator "*ppuVar16" (* "*") (identifier "ppuVar16"))) (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "undefined4 *puVar18;" (type_identifier "undefined4") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "undefined1 auStack_80 [4];" (type_identifier "undefined1") (array_declarator "auStack_80 [4]" (identifier "auStack_80") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "uint local_7c;" (type_identifier "uint") (identifier "local_7c") (; ";")) (declaration "uint local_78;" (type_identifier "uint") (identifier "local_78") (; ";")) (declaration "uint local_74;" (type_identifier "uint") (identifier "local_74") (; ";")) (declaration "uint local_70;" (type_identifier "uint") (identifier "local_70") (; ";")) (declaration "undefined4 *local_6c;" (type_identifier "undefined4") (pointer_declarator "*local_6c" (* "*") (identifier "local_6c")) (; ";")) (declaration "int *local_68;" (primitive_type "int") (pointer_declarator "*local_68" (* "*") (identifier "local_68")) (; ";")) (declaration "uint local_64;" (type_identifier "uint") (identifier "local_64") (; ";")) (declaration "undefined1 **local_60;" (type_identifier "undefined1") (pointer_declarator "**local_60" (* "*") (pointer_declarator "*local_60" (* "*") (identifier "local_60"))) (; ";")) (declaration "undefined1 **local_5c;" (type_identifier "undefined1") (pointer_declarator "**local_5c" (* "*") (pointer_declarator "*local_5c" (* "*") (identifier "local_5c"))) (; ";")) (declaration "uint local_58;" (type_identifier "uint") (identifier "local_58") (; ";")) (declaration "undefined **local_54;" (type_identifier "undefined") (pointer_declarator "**local_54" (* "*") (pointer_declarator "*local_54" (* "*") (identifier "local_54"))) (; ";")) (declaration "uint local_50;" (type_identifier "uint") (identifier "local_50") (; ";")) (declaration "char local_49;" (primitive_type "char") (identifier "local_49") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "undefined1 **local_44;" (type_identifier "undefined1") (pointer_declarator "**local_44" (* "*") (pointer_declarator "*local_44" (* "*") (identifier "local_44"))) (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined8 local_3c;" (type_identifier "undefined8") (identifier "local_3c") (; ";")) (declaration "undefined1 *local_34;" (type_identifier "undefined1") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "local_54 = &__DT_PLTGOT;" (assignment_expression "local_54 = &__DT_PLTGOT" (identifier "local_54") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (if_statement "if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }\n  else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }" (if "if") (parenthesized_expression "(*(code **)(*param_1 + 0xc) == FUN_000735e0)" (( "(") (binary_expression "*(code **)(*param_1 + 0xc) == FUN_000735e0" (pointer_expression "*(code **)(*param_1 + 0xc)" (* "*") (cast_expression "(code **)(*param_1 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xc)" (( "(") (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (identifier "FUN_000735e0")) () ")")) (compound_statement "{\n    local_3c = *(undefined8 *)(param_1 + 9);\n  }" ({ "{") (expression_statement "local_3c = *(undefined8 *)(param_1 + 9);" (assignment_expression "local_3c = *(undefined8 *)(param_1 + 9)" (identifier "local_3c") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 9)" (* "*") (cast_expression "(undefined8 *)(param_1 + 9)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }" (else "else") (compound_statement "{\n    local_3c = (**(code **)(*param_1 + 0xc))(param_1);\n  }" ({ "{") (expression_statement "local_3c = (**(code **)(*param_1 + 0xc))(param_1);" (assignment_expression "local_3c = (**(code **)(*param_1 + 0xc))(param_1)" (identifier "local_3c") (= "=") (call_expression "(**(code **)(*param_1 + 0xc))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xc))" (( "(") (pointer_expression "**(code **)(*param_1 + 0xc)" (* "*") (pointer_expression "*(code **)(*param_1 + 0xc)" (* "*") (cast_expression "(code **)(*param_1 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xc)" (( "(") (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (} "}")))) (expression_statement "local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);" (assignment_expression "local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c)" (identifier "local_78") (= "=") (call_expression "FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c)" (identifier "FUN_000b1f60") (argument_list "(param_2,param_3,&local_48,&local_49,&local_3c)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (pointer_expression "&local_49" (& "&") (identifier "local_49")) (, ",") (pointer_expression "&local_3c" (& "&") (identifier "local_3c")) () ")")))) (; ";")) (expression_statement "local_58 = local_78 + local_48;" (assignment_expression "local_58 = local_78 + local_48" (identifier "local_58") (= "=") (binary_expression "local_78 + local_48" (identifier "local_78") (+ "+") (identifier "local_48"))) (; ";")) (expression_statement "puVar14 = &local_7c;" (assignment_expression "puVar14 = &local_7c" (identifier "puVar14") (= "=") (pointer_expression "&local_7c" (& "&") (identifier "local_7c"))) (; ";")) (if_statement "if (*(char *)(local_58 - 1) == '\0') {\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }\n  else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    \n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }" (if "if") (parenthesized_expression "(*(char *)(local_58 - 1) == '\0')" (( "(") (binary_expression "*(char *)(local_58 - 1) == '\0'" (pointer_expression "*(char *)(local_58 - 1)" (* "*") (cast_expression "(char *)(local_58 - 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_58 - 1)" (( "(") (binary_expression "local_58 - 1" (identifier "local_58") (- "-") (number_literal "1")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_001c8590:\n    local_50 = local_58;\n    puVar12 = (undefined1 *)puVar14;\n  }" ({ "{") (labeled_statement "LAB_001c8590:\n    local_50 = local_58;" (statement_identifier "LAB_001c8590") (: ":") (expression_statement "local_50 = local_58;" (assignment_expression "local_50 = local_58" (identifier "local_50") (= "=") (identifier "local_58")) (; ";"))) (expression_statement "puVar12 = (undefined1 *)puVar14;" (assignment_expression "puVar12 = (undefined1 *)puVar14" (identifier "puVar12") (= "=") (cast_expression "(undefined1 *)puVar14" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar14"))) (; ";")) (} "}")) (else_clause "else {\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    \n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }" (else "else") (compound_statement "{\n    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);\n    puVar12 = local_34;\n    iVar2 = param_2[1];\n    uVar5 = gettext(local_54 + -0x3bc00);\n                    \n    FUN_000654e0(uVar5,iVar2,puVar12);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    puVar12 = auStack_80;\n    puVar14 = (uint *)auStack_80;\n    if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;\n    do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');\n  }" ({ "{") (expression_statement "(**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);" (call_expression "(**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3)" (parenthesized_expression "(**(code **)(*param_2 + 0x40))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x40)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x40)" (* "*") (cast_expression "(code **)(*param_2 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x40)" (( "(") (binary_expression "*param_2 + 0x40" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (argument_list "(&local_34,param_2,param_3)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "puVar12 = local_34;" (assignment_expression "puVar12 = local_34" (identifier "puVar12") (= "=") (identifier "local_34")) (; ";")) (expression_statement "iVar2 = param_2[1];" (assignment_expression "iVar2 = param_2[1]" (identifier "iVar2") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar5 = gettext(local_54 + -0x3bc00);" (assignment_expression "uVar5 = gettext(local_54 + -0x3bc00)" (identifier "uVar5") (= "=") (call_expression "gettext(local_54 + -0x3bc00)" (identifier "gettext") (argument_list "(local_54 + -0x3bc00)" (( "(") (binary_expression "local_54 + -0x3bc00" (identifier "local_54") (+ "+") (number_literal "-0x3bc00")) () ")")))) (; ";")) (expression_statement "FUN_000654e0(uVar5,iVar2,puVar12);" (call_expression "FUN_000654e0(uVar5,iVar2,puVar12)" (identifier "FUN_000654e0") (argument_list "(uVar5,iVar2,puVar12)" (( "(") (identifier "uVar5") (, ",") (identifier "iVar2") (, ",") (identifier "puVar12") () ")"))) (; ";")) (if_statement "if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }" (if "if") (parenthesized_expression "(local_34 != local_2c)" (( "(") (binary_expression "local_34 != local_2c" (identifier "local_34") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n      FUN_001e6db0(local_34);\n    }" ({ "{") (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" (identifier "FUN_001e6db0") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar12 = auStack_80;" (assignment_expression "puVar12 = auStack_80" (identifier "puVar12") (= "=") (identifier "auStack_80")) (; ";")) (expression_statement "puVar14 = (uint *)auStack_80;" (assignment_expression "puVar14 = (uint *)auStack_80" (identifier "puVar14") (= "=") (cast_expression "(uint *)auStack_80" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "auStack_80"))) (; ";")) (if_statement "if ((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))\n    goto LAB_001c8590;" (if "if") (parenthesized_expression "((local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))" (( "(") (binary_expression "(local_58 <= local_78) ||\n       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0')" (parenthesized_expression "(local_58 <= local_78)" (( "(") (binary_expression "local_58 <= local_78" (identifier "local_58") (<= "<=") (identifier "local_78")) () ")")) (|| "||") (parenthesized_expression "(puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0')" (( "(") (comma_expression "puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'" (assignment_expression "puVar14 = (uint *)auStack_80" (identifier "puVar14") (= "=") (cast_expression "(uint *)auStack_80" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "auStack_80"))) (, ",") (comma_expression "uVar10 = local_58, *(char *)(local_58 - 1) == '\0'" (assignment_expression "uVar10 = local_58" (identifier "uVar10") (= "=") (identifier "local_58")) (, ",") (binary_expression "*(char *)(local_58 - 1) == '\0'" (pointer_expression "*(char *)(local_58 - 1)" (* "*") (cast_expression "(char *)(local_58 - 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_58 - 1)" (( "(") (binary_expression "local_58 - 1" (identifier "local_58") (- "-") (number_literal "1")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))))) () ")"))) () ")")) (goto_statement "goto LAB_001c8590;" (goto "goto") (statement_identifier "LAB_001c8590") (; ";"))) (do_statement "do {\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    } while (*pcVar1 != '\0');" (do "do") (compound_statement "{\n      local_50 = uVar10 - 1;\n      if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }\n      pcVar1 = (char *)(uVar10 - 2);\n      uVar10 = local_50;\n    }" ({ "{") (expression_statement "local_50 = uVar10 - 1;" (assignment_expression "local_50 = uVar10 - 1" (identifier "local_50") (= "=") (binary_expression "uVar10 - 1" (identifier "uVar10") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (local_78 == local_50) {\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }" (if "if") (parenthesized_expression "(local_78 == local_50)" (( "(") (binary_expression "local_78 == local_50" (identifier "local_78") (== "==") (identifier "local_50")) () ")")) (compound_statement "{\n        local_50 = local_78;\n        puVar12 = auStack_80;\n        break;\n      }" ({ "{") (expression_statement "local_50 = local_78;" (assignment_expression "local_50 = local_78" (identifier "local_50") (= "=") (identifier "local_78")) (; ";")) (expression_statement "puVar12 = auStack_80;" (assignment_expression "puVar12 = auStack_80" (identifier "puVar12") (= "=") (identifier "auStack_80")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "pcVar1 = (char *)(uVar10 - 2);" (assignment_expression "pcVar1 = (char *)(uVar10 - 2)" (identifier "pcVar1") (= "=") (cast_expression "(char *)(uVar10 - 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar10 - 2)" (( "(") (binary_expression "uVar10 - 2" (identifier "uVar10") (- "-") (number_literal "2")) () ")")))) (; ";")) (expression_statement "uVar10 = local_50;" (assignment_expression "uVar10 = local_50" (identifier "uVar10") (= "=") (identifier "local_50")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*pcVar1 != '\0')" (( "(") (binary_expression "*pcVar1 != '\0'" (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(puVar12 + -0x10) = 0x14;" (assignment_expression "*(undefined4 *)(puVar12 + -0x10) = 0x14" (pointer_expression "*(undefined4 *)(puVar12 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0x14")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8350;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8350" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c8350")) (; ";")) (expression_statement "local_44 = (undefined1 **)FUN_001e5200();" (assignment_expression "local_44 = (undefined1 **)FUN_001e5200()" (identifier "local_44") (= "=") (cast_expression "(undefined1 **)FUN_001e5200()" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (call_expression "FUN_001e5200()" (identifier "FUN_001e5200") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_44[2] = (undefined1 *)0x0;" (assignment_expression "local_44[2] = (undefined1 *)0x0" (subscript_expression "local_44[2]" (identifier "local_44") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*local_44 = (undefined1 *)param_2;" (assignment_expression "*local_44 = (undefined1 *)param_2" (pointer_expression "*local_44" (* "*") (identifier "local_44")) (= "=") (cast_expression "(undefined1 *)param_2" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (; ";")) (expression_statement "local_44[3] = (undefined1 *)0x0;" (assignment_expression "local_44[3] = (undefined1 *)0x0" (subscript_expression "local_44[3]" (identifier "local_44") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar8 = (undefined4 *)param_1[0x2b];" (assignment_expression "puVar8 = (undefined4 *)param_1[0x2b]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)param_1[0x2b]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x2b]" (identifier "param_1") ([ "[") (number_literal "0x2b") (] "]")))) (; ";")) (expression_statement "local_44[1] = param_3;" (assignment_expression "local_44[1] = param_3" (subscript_expression "local_44[1]" (identifier "local_44") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_44[4] = (undefined1 *)0x0;" (assignment_expression "local_44[4] = (undefined1 *)0x0" (subscript_expression "local_44[4]" (identifier "local_44") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (puVar8 == (undefined4 *)param_1[0x2c]) {\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }\n  else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }" (if "if") (parenthesized_expression "(puVar8 == (undefined4 *)param_1[0x2c])" (( "(") (binary_expression "puVar8 == (undefined4 *)param_1[0x2c]" (identifier "puVar8") (== "==") (cast_expression "(undefined4 *)param_1[0x2c]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x2c]" (identifier "param_1") ([ "[") (number_literal "0x2c") (] "]")))) () ")")) (compound_statement "{\n    *(undefined1 ****)(puVar12 + -8) = &local_44;\n    *(undefined4 **)(puVar12 + -0xc) = puVar8;\n    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;\n    FUN_001c6ec0();\n  }" ({ "{") (expression_statement "*(undefined1 ****)(puVar12 + -8) = &local_44;" (assignment_expression "*(undefined1 ****)(puVar12 + -8) = &local_44" (pointer_expression "*(undefined1 ****)(puVar12 + -8)" (* "*") (cast_expression "(undefined1 ****)(puVar12 + -8)" (( "(") (type_descriptor "undefined1 ****" (type_identifier "undefined1") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))) () ")") (parenthesized_expression "(puVar12 + -8)" (( "(") (binary_expression "puVar12 + -8" (identifier "puVar12") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (expression_statement "*(undefined4 **)(puVar12 + -0xc) = puVar8;" (assignment_expression "*(undefined4 **)(puVar12 + -0xc) = puVar8" (pointer_expression "*(undefined4 **)(puVar12 + -0xc)" (* "*") (cast_expression "(undefined4 **)(puVar12 + -0xc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0xc)" (( "(") (binary_expression "puVar12 + -0xc" (identifier "puVar12") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "*(int **)(puVar12 + -0x10) = param_1 + 0x2a;" (assignment_expression "*(int **)(puVar12 + -0x10) = param_1 + 0x2a" (pointer_expression "*(int **)(puVar12 + -0x10)" (* "*") (cast_expression "(int **)(puVar12 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "param_1 + 0x2a" (identifier "param_1") (+ "+") (number_literal "0x2a"))) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8696;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8696" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c8696")) (; ";")) (expression_statement "FUN_001c6ec0();" (call_expression "FUN_001c6ec0()" (identifier "FUN_001c6ec0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }" (else "else") (compound_statement "{\n    *puVar8 = local_44;\n    param_1[0x2b] = (int)(puVar8 + 1);\n  }" ({ "{") (expression_statement "*puVar8 = local_44;" (assignment_expression "*puVar8 = local_44" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "local_44")) (; ";")) (expression_statement "param_1[0x2b] = (int)(puVar8 + 1);" (assignment_expression "param_1[0x2b] = (int)(puVar8 + 1)" (subscript_expression "param_1[0x2b]" (identifier "param_1") ([ "[") (number_literal "0x2b") (] "]")) (= "=") (cast_expression "(int)(puVar8 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar8 + 1)" (( "(") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")))) (expression_statement "local_5c = local_44 + 2;" (assignment_expression "local_5c = local_44 + 2" (identifier "local_5c") (= "=") (binary_expression "local_44 + 2" (identifier "local_44") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (local_78 < local_50) {\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }\n  else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }" (if "if") (parenthesized_expression "(local_78 < local_50)" (( "(") (binary_expression "local_78 < local_50" (identifier "local_78") (< "<") (identifier "local_50")) () ")")) (compound_statement "{\n    local_60 = local_44;\n    uVar17 = 0;\n    uVar10 = local_78;\n    do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);\n    uVar10 = uVar9;\n    local_7c = uVar17;\n    if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }\n    if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }\n    puVar8 = (undefined4 *)local_60[2];\n    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_60[3];\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    local_64 = uVar10 * 8;\n    if (uVar10 != 0) goto LAB_001c85d4;\n    local_60 = (undefined1 **)0x0;\n    ppuVar4 = local_60;\n    puVar11 = puVar8;\n  }" ({ "{") (expression_statement "local_60 = local_44;" (assignment_expression "local_60 = local_44" (identifier "local_60") (= "=") (identifier "local_44")) (; ";")) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = local_78;" (assignment_expression "uVar10 = local_78" (identifier "uVar10") (= "=") (identifier "local_78")) (; ";")) (do_statement "do {\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    } while (uVar10 < local_50);" (do "do") (compound_statement "{\n      *(uint *)(puVar12 + -0x10) = uVar10;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;\n      sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      ppuVar16 = local_60;\n      uVar9 = uVar17 + 1;\n      if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }\n      uVar10 = uVar10 + 1 + sVar6;\n    }" ({ "{") (expression_statement "*(uint *)(puVar12 + -0x10) = uVar10;" (assignment_expression "*(uint *)(puVar12 + -0x10) = uVar10" (pointer_expression "*(uint *)(puVar12 + -0x10)" (* "*") (cast_expression "(uint *)(puVar12 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c83cc" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c83cc")) (; ";")) (expression_statement "sVar6 = strlen(*(char **)(puVar12 + -0x10));" (assignment_expression "sVar6 = strlen(*(char **)(puVar12 + -0x10))" (identifier "sVar6") (= "=") (call_expression "strlen(*(char **)(puVar12 + -0x10))" (identifier "strlen") (argument_list "(*(char **)(puVar12 + -0x10))" (( "(") (pointer_expression "*(char **)(puVar12 + -0x10)" (* "*") (cast_expression "(char **)(puVar12 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) () ")")))) (; ";")) (expression_statement "ppuVar16 = local_60;" (assignment_expression "ppuVar16 = local_60" (identifier "ppuVar16") (= "=") (identifier "local_60")) (; ";")) (expression_statement "uVar9 = uVar17 + 1;" (assignment_expression "uVar9 = uVar17 + 1" (identifier "uVar9") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (sVar6 != 0) {\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }" (if "if") (parenthesized_expression "(sVar6 != 0)" (( "(") (binary_expression "sVar6 != 0" (identifier "sVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar9 = uVar17 + 2;\n        uVar17 = uVar17 + 1;\n      }" ({ "{") (expression_statement "uVar9 = uVar17 + 2;" (assignment_expression "uVar9 = uVar17 + 2" (identifier "uVar9") (= "=") (binary_expression "uVar17 + 2" (identifier "uVar17") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 + 1 + sVar6;" (assignment_expression "uVar10 = uVar10 + 1 + sVar6" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1 + sVar6" (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1")) (+ "+") (identifier "sVar6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar10 < local_50)" (( "(") (binary_expression "uVar10 < local_50" (identifier "uVar10") (< "<") (identifier "local_50")) () ")")) (; ";")) (expression_statement "uVar10 = uVar9;" (assignment_expression "uVar10 = uVar9" (identifier "uVar10") (= "=") (identifier "uVar9")) (; ";")) (expression_statement "local_7c = uVar17;" (assignment_expression "local_7c = uVar17" (identifier "local_7c") (= "=") (identifier "uVar17")) (; ";")) (if_statement "if (local_50 < local_58) {\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }" (if "if") (parenthesized_expression "(local_50 < local_58)" (( "(") (binary_expression "local_50 < local_58" (identifier "local_50") (< "<") (identifier "local_58")) () ")")) (compound_statement "{\n      uVar10 = uVar9 + 1;\n      local_7c = uVar9;\n    }" ({ "{") (expression_statement "uVar10 = uVar9 + 1;" (assignment_expression "uVar10 = uVar9 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_7c = uVar9;" (assignment_expression "local_7c = uVar9" (identifier "local_7c") (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (if_statement "if (0x1fffffff < uVar10) {\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }" (if "if") (parenthesized_expression "(0x1fffffff < uVar10)" (( "(") (binary_expression "0x1fffffff < uVar10" (number_literal "0x1fffffff") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;\n                    \n      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;\n      FUN_0022c7a0();\n    }" ({ "{") (expression_statement "*(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;" (assignment_expression "*(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d" (pointer_expression "*(int *)(puVar12 + -0x10)" (* "*") (cast_expression "(int *)(puVar12 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "(int)local_54 + -0x10ea7d" (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54")) (+ "+") (number_literal "-0x10ea7d"))) (; ";")) (expression_statement "*(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;" (assignment_expression "*(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729" (pointer_expression "*(undefined1 **)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined1 **)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&LAB_001c8729" (& "&") (identifier "LAB_001c8729"))) (; ";")) (expression_statement "FUN_0022c7a0();" (call_expression "FUN_0022c7a0()" (identifier "FUN_0022c7a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar8 = (undefined4 *)local_60[2];" (assignment_expression "puVar8 = (undefined4 *)local_60[2]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)local_60[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_60[2]" (identifier "local_60") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;" (if "if") (parenthesized_expression "(uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3))" (( "(") (binary_expression "uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)" (identifier "uVar10") (<= "<=") (call_expression "(uint)((int)local_60[4] - (int)puVar8 >> 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)local_60[4] - (int)puVar8 >> 3)" (( "(") (binary_expression "(int)local_60[4] - (int)puVar8 >> 3" (binary_expression "(int)local_60[4] - (int)puVar8" (cast_expression "(int)local_60[4]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_60[4]" (identifier "local_60") ([ "[") (number_literal "4") (] "]"))) (- "-") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) (>> ">>") (number_literal "3")) () ")")))) () ")")) (goto_statement "goto LAB_001c8419;" (goto "goto") (statement_identifier "LAB_001c8419") (; ";"))) (expression_statement "puVar18 = (undefined4 *)local_60[3];" (assignment_expression "puVar18 = (undefined4 *)local_60[3]" (identifier "puVar18") (= "=") (cast_expression "(undefined4 *)local_60[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_60[3]" (identifier "local_60") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "local_68 = (int *)((int)puVar18 - (int)puVar8);" (assignment_expression "local_68 = (int *)((int)puVar18 - (int)puVar8)" (identifier "local_68") (= "=") (cast_expression "(int *)((int)puVar18 - (int)puVar8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 - (int)puVar8)" (( "(") (binary_expression "(int)puVar18 - (int)puVar8" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (- "-") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")))) (; ";")) (expression_statement "local_64 = uVar10 * 8;" (assignment_expression "local_64 = uVar10 * 8" (identifier "local_64") (= "=") (binary_expression "uVar10 * 8" (identifier "uVar10") (* "*") (number_literal "8"))) (; ";")) (if_statement "if (uVar10 != 0) goto LAB_001c85d4;" (if "if") (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c85d4;" (goto "goto") (statement_identifier "LAB_001c85d4") (; ";"))) (expression_statement "local_60 = (undefined1 **)0x0;" (assignment_expression "local_60 = (undefined1 **)0x0" (identifier "local_60") (= "=") (cast_expression "(undefined1 **)0x0" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "ppuVar4 = local_60;" (assignment_expression "ppuVar4 = local_60" (identifier "ppuVar4") (= "=") (identifier "local_60")) (; ";")) (expression_statement "puVar11 = puVar8;" (assignment_expression "puVar11 = puVar8" (identifier "puVar11") (= "=") (identifier "puVar8")) (; ";")) (} "}")) (else_clause "else {\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }" (else "else") (compound_statement "{\n    puVar8 = (undefined4 *)local_44[2];\n    local_7c = (uint)(local_50 < local_58);\n    uVar10 = ~-(uint)(local_50 < local_58) + 2;\n    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;\n    puVar18 = (undefined4 *)local_44[3];\n    local_64 = uVar10 * 8;\n    local_68 = (int *)((int)puVar18 - (int)puVar8);\n    ppuVar16 = local_44;\nLAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;\n    local_6c = puVar8;\n    local_60 = (undefined1 **)FUN_001e5200();\n    puVar8 = local_6c;\n    ppuVar4 = local_60;\n    puVar11 = (undefined4 *)ppuVar16[2];\n  }" ({ "{") (expression_statement "puVar8 = (undefined4 *)local_44[2];" (assignment_expression "puVar8 = (undefined4 *)local_44[2]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)local_44[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_44[2]" (identifier "local_44") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "local_7c = (uint)(local_50 < local_58);" (assignment_expression "local_7c = (uint)(local_50 < local_58)" (identifier "local_7c") (= "=") (call_expression "(uint)(local_50 < local_58)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_50 < local_58)" (( "(") (binary_expression "local_50 < local_58" (identifier "local_50") (< "<") (identifier "local_58")) () ")")))) (; ";")) (expression_statement "uVar10 = ~-(uint)(local_50 < local_58) + 2;" (assignment_expression "uVar10 = ~-(uint)(local_50 < local_58) + 2" (identifier "uVar10") (= "=") (binary_expression "~-(uint)(local_50 < local_58) + 2" (unary_expression "~-(uint)(local_50 < local_58)" (~ "~") (unary_expression "-(uint)(local_50 < local_58)" (- "-") (call_expression "(uint)(local_50 < local_58)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_50 < local_58)" (( "(") (binary_expression "local_50 < local_58" (identifier "local_50") (< "<") (identifier "local_58")) () ")"))))) (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;" (if "if") (parenthesized_expression "(uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3))" (( "(") (binary_expression "uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)" (identifier "uVar10") (<= "<=") (call_expression "(uint)((int)local_44[4] - (int)puVar8 >> 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)local_44[4] - (int)puVar8 >> 3)" (( "(") (binary_expression "(int)local_44[4] - (int)puVar8 >> 3" (binary_expression "(int)local_44[4] - (int)puVar8" (cast_expression "(int)local_44[4]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_44[4]" (identifier "local_44") ([ "[") (number_literal "4") (] "]"))) (- "-") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) (>> ">>") (number_literal "3")) () ")")))) () ")")) (goto_statement "goto LAB_001c8419;" (goto "goto") (statement_identifier "LAB_001c8419") (; ";"))) (expression_statement "puVar18 = (undefined4 *)local_44[3];" (assignment_expression "puVar18 = (undefined4 *)local_44[3]" (identifier "puVar18") (= "=") (cast_expression "(undefined4 *)local_44[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_44[3]" (identifier "local_44") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "local_64 = uVar10 * 8;" (assignment_expression "local_64 = uVar10 * 8" (identifier "local_64") (= "=") (binary_expression "uVar10 * 8" (identifier "uVar10") (* "*") (number_literal "8"))) (; ";")) (expression_statement "local_68 = (int *)((int)puVar18 - (int)puVar8);" (assignment_expression "local_68 = (int *)((int)puVar18 - (int)puVar8)" (identifier "local_68") (= "=") (cast_expression "(int *)((int)puVar18 - (int)puVar8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 - (int)puVar8)" (( "(") (binary_expression "(int)puVar18 - (int)puVar8" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (- "-") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")))) (; ";")) (expression_statement "ppuVar16 = local_44;" (assignment_expression "ppuVar16 = local_44" (identifier "ppuVar16") (= "=") (identifier "local_44")) (; ";")) (labeled_statement "LAB_001c85d4:\n    *(uint *)(puVar12 + -0x10) = local_64;" (statement_identifier "LAB_001c85d4") (: ":") (expression_statement "*(uint *)(puVar12 + -0x10) = local_64;" (assignment_expression "*(uint *)(puVar12 + -0x10) = local_64" (pointer_expression "*(uint *)(puVar12 + -0x10)" (* "*") (cast_expression "(uint *)(puVar12 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_64")) (; ";"))) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c85e5" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c85e5")) (; ";")) (expression_statement "local_6c = puVar8;" (assignment_expression "local_6c = puVar8" (identifier "local_6c") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "local_60 = (undefined1 **)FUN_001e5200();" (assignment_expression "local_60 = (undefined1 **)FUN_001e5200()" (identifier "local_60") (= "=") (cast_expression "(undefined1 **)FUN_001e5200()" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (call_expression "FUN_001e5200()" (identifier "FUN_001e5200") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar8 = local_6c;" (assignment_expression "puVar8 = local_6c" (identifier "puVar8") (= "=") (identifier "local_6c")) (; ";")) (expression_statement "ppuVar4 = local_60;" (assignment_expression "ppuVar4 = local_60" (identifier "ppuVar4") (= "=") (identifier "local_60")) (; ";")) (expression_statement "puVar11 = (undefined4 *)ppuVar16[2];" (assignment_expression "puVar11 = (undefined4 *)ppuVar16[2]" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)ppuVar16[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "ppuVar16[2]" (identifier "ppuVar16") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (for_statement "for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }" (for "for") (( "(") (; ";") (binary_expression "puVar8 != puVar18" (identifier "puVar8") (!= "!=") (identifier "puVar18")) (; ";") (assignment_expression "puVar8 = puVar8 + 2" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 2" (identifier "puVar8") (+ "+") (number_literal "2"))) () ")") (compound_statement "{\n    puVar13 = (undefined1 *)puVar8[1];\n    *ppuVar4 = (undefined1 *)*puVar8;\n    ppuVar4[1] = puVar13;\n    local_6c = puVar11;\n    ppuVar4 = ppuVar4 + 2;\n  }" ({ "{") (expression_statement "puVar13 = (undefined1 *)puVar8[1];" (assignment_expression "puVar13 = (undefined1 *)puVar8[1]" (identifier "puVar13") (= "=") (cast_expression "(undefined1 *)puVar8[1]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "*ppuVar4 = (undefined1 *)*puVar8;" (assignment_expression "*ppuVar4 = (undefined1 *)*puVar8" (pointer_expression "*ppuVar4" (* "*") (identifier "ppuVar4")) (= "=") (cast_expression "(undefined1 *)*puVar8" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (expression_statement "ppuVar4[1] = puVar13;" (assignment_expression "ppuVar4[1] = puVar13" (subscript_expression "ppuVar4[1]" (identifier "ppuVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar13")) (; ";")) (expression_statement "local_6c = puVar11;" (assignment_expression "local_6c = puVar11" (identifier "local_6c") (= "=") (identifier "puVar11")) (; ";")) (expression_statement "ppuVar4 = ppuVar4 + 2;" (assignment_expression "ppuVar4 = ppuVar4 + 2" (identifier "ppuVar4") (= "=") (binary_expression "ppuVar4 + 2" (identifier "ppuVar4") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }" (if "if") (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar11 != (undefined4 *)0x0" (identifier "puVar11") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *(undefined4 **)(puVar12 + -0x10) = puVar11;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;\n    FUN_001e6db0();\n  }" ({ "{") (expression_statement "*(undefined4 **)(puVar12 + -0x10) = puVar11;" (assignment_expression "*(undefined4 **)(puVar12 + -0x10) = puVar11" (pointer_expression "*(undefined4 **)(puVar12 + -0x10)" (* "*") (cast_expression "(undefined4 **)(puVar12 + -0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar11")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8628;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8628" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c8628")) (; ";")) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" (identifier "FUN_001e6db0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "ppuVar16[2] = (undefined1 *)local_60;" (assignment_expression "ppuVar16[2] = (undefined1 *)local_60" (subscript_expression "ppuVar16[2]" (identifier "ppuVar16") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(undefined1 *)local_60" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_60"))) (; ";")) (expression_statement "ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);" (assignment_expression "ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60)" (subscript_expression "ppuVar16[3]" (identifier "ppuVar16") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(undefined1 *)((int)local_68 + (int)local_60)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_68 + (int)local_60)" (( "(") (binary_expression "(int)local_68 + (int)local_60" (cast_expression "(int)local_68" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_68")) (+ "+") (cast_expression "(int)local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_60"))) () ")")))) (; ";")) (expression_statement "ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);" (assignment_expression "ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60)" (subscript_expression "ppuVar16[4]" (identifier "ppuVar16") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(undefined1 *)(local_64 + (int)local_60)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_64 + (int)local_60)" (( "(") (binary_expression "local_64 + (int)local_60" (identifier "local_64") (+ "+") (cast_expression "(int)local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_60"))) () ")")))) (; ";")) (labeled_statement "LAB_001c8419:\n  uVar10 = local_50;" (statement_identifier "LAB_001c8419") (: ":") (expression_statement "uVar10 = local_50;" (assignment_expression "uVar10 = local_50" (identifier "uVar10") (= "=") (identifier "local_50")) (; ";"))) (expression_statement "local_74 = (int)local_3c - 1U & local_78;" (assignment_expression "local_74 = (int)local_3c - 1U & local_78" (identifier "local_74") (= "=") (binary_expression "(int)local_3c - 1U & local_78" (binary_expression "(int)local_3c - 1U" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (- "-") (number_literal "1U")) (& "&") (identifier "local_78"))) (; ";")) (expression_statement "puVar13 = puVar12;" (assignment_expression "puVar13 = puVar12" (identifier "puVar13") (= "=") (identifier "puVar12")) (; ";")) (if_statement "if (local_78 < local_58) {\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }\n  else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }" (if "if") (parenthesized_expression "(local_78 < local_58)" (( "(") (binary_expression "local_78 < local_58" (identifier "local_78") (< "<") (identifier "local_58")) () ")")) (compound_statement "{\n    local_64 = local_64 & 0xffffff00;\n    local_68 = param_1 + 0x17;\n    local_60 = &local_34;\n    local_6c = &local_40;\n    local_50 = local_78;\n    local_70 = uVar10;\n    puVar15 = (undefined1 *)0x0;\n    do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);\n    local_30 = 0;\n    *(undefined1 ***)(puVar12 + -0xc) = local_60;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;\n    local_34 = puVar15;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);\n    if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }\n  }" ({ "{") (expression_statement "local_64 = local_64 & 0xffffff00;" (assignment_expression "local_64 = local_64 & 0xffffff00" (identifier "local_64") (= "=") (binary_expression "local_64 & 0xffffff00" (identifier "local_64") (& "&") (number_literal "0xffffff00"))) (; ";")) (expression_statement "local_68 = param_1 + 0x17;" (assignment_expression "local_68 = param_1 + 0x17" (identifier "local_68") (= "=") (binary_expression "param_1 + 0x17" (identifier "param_1") (+ "+") (number_literal "0x17"))) (; ";")) (expression_statement "local_60 = &local_34;" (assignment_expression "local_60 = &local_34" (identifier "local_60") (= "=") (pointer_expression "&local_34" (& "&") (identifier "local_34"))) (; ";")) (expression_statement "local_6c = &local_40;" (assignment_expression "local_6c = &local_40" (identifier "local_6c") (= "=") (pointer_expression "&local_40" (& "&") (identifier "local_40"))) (; ";")) (expression_statement "local_50 = local_78;" (assignment_expression "local_50 = local_78" (identifier "local_50") (= "=") (identifier "local_78")) (; ";")) (expression_statement "local_70 = uVar10;" (assignment_expression "local_70 = uVar10" (identifier "local_70") (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar15 = (undefined1 *)0x0;" (assignment_expression "puVar15 = (undefined1 *)0x0" (identifier "puVar15") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (do_statement "do {\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    } while (local_50 < local_58);" (do "do") (compound_statement "{\n      sVar6 = local_58 - local_50;\n      if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }\n      if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }\n      *(undefined4 **)(puVar12 + -0x10) = local_6c;\n      *(undefined4 *)(puVar12 + -0x14) = 1;\n      *(size_t *)(puVar12 + -0x18) = sVar6;\n      *(uint *)(puVar12 + -0x1c) = local_50;\n      *(int **)(puVar12 + -0x20) = local_68;\n      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;\n      FUN_00174780();\n      *(undefined1 ***)(puVar12 + -0xc) = local_60;\n      *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n      local_30 = local_40;\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;\n      local_34 = puVar15;\n      FUN_001c7520();\n      ppuVar16 = local_60;\n      local_50 = local_50 + sVar6 + 1;\n      puVar15 = puVar15 + sVar6 + 1;\n    }" ({ "{") (expression_statement "sVar6 = local_58 - local_50;" (assignment_expression "sVar6 = local_58 - local_50" (identifier "sVar6") (= "=") (binary_expression "local_58 - local_50" (identifier "local_58") (- "-") (identifier "local_50"))) (; ";")) (if_statement "if (local_50 < local_70) {\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }" (if "if") (parenthesized_expression "(local_50 < local_70)" (( "(") (binary_expression "local_50 < local_70" (identifier "local_50") (< "<") (identifier "local_70")) () ")")) (compound_statement "{\n        *(uint *)(puVar12 + -0x10) = local_50;\n        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;\n        sVar6 = strlen(*(char **)(puVar12 + -0x10));\n      }" ({ "{") (expression_statement "*(uint *)(puVar12 + -0x10) = local_50;" (assignment_expression "*(uint *)(puVar12 + -0x10) = local_50" (pointer_expression "*(uint *)(puVar12 + -0x10)" (* "*") (cast_expression "(uint *)(puVar12 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c8471;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c8471" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c8471")) (; ";")) (expression_statement "sVar6 = strlen(*(char **)(puVar12 + -0x10));" (assignment_expression "sVar6 = strlen(*(char **)(puVar12 + -0x10))" (identifier "sVar6") (= "=") (call_expression "strlen(*(char **)(puVar12 + -0x10))" (identifier "strlen") (argument_list "(*(char **)(puVar12 + -0x10))" (( "(") (pointer_expression "*(char **)(puVar12 + -0x10)" (* "*") (cast_expression "(char **)(puVar12 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) () ")")))) (; ";")) (} "}"))) (if_statement "if (sVar6 != 0) {\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }" (if "if") (parenthesized_expression "(sVar6 != 0)" (( "(") (binary_expression "sVar6 != 0" (identifier "sVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar7 = (char)local_64;\n        if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }\n        local_64 = CONCAT31(local_64._1_3_,uVar7);\n      }" ({ "{") (expression_statement "uVar7 = (char)local_64;" (assignment_expression "uVar7 = (char)local_64" (identifier "uVar7") (= "=") (cast_expression "(char)local_64" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_64"))) (; ";")) (if_statement "if (((int)local_3c - 1U & local_50) != local_74) {\n          uVar7 = 1;\n        }" (if "if") (parenthesized_expression "(((int)local_3c - 1U & local_50) != local_74)" (( "(") (binary_expression "((int)local_3c - 1U & local_50) != local_74" (parenthesized_expression "((int)local_3c - 1U & local_50)" (( "(") (binary_expression "(int)local_3c - 1U & local_50" (binary_expression "(int)local_3c - 1U" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (- "-") (number_literal "1U")) (& "&") (identifier "local_50")) () ")")) (!= "!=") (identifier "local_74")) () ")")) (compound_statement "{\n          uVar7 = 1;\n        }" ({ "{") (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "local_64 = CONCAT31(local_64._1_3_,uVar7);" (assignment_expression "local_64 = CONCAT31(local_64._1_3_,uVar7)" (identifier "local_64") (= "=") (call_expression "CONCAT31(local_64._1_3_,uVar7)" (identifier "CONCAT31") (argument_list "(local_64._1_3_,uVar7)" (( "(") (field_expression "local_64._1_3_" (identifier "local_64") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "uVar7") () ")")))) (; ";")) (} "}"))) (expression_statement "*(undefined4 **)(puVar12 + -0x10) = local_6c;" (assignment_expression "*(undefined4 **)(puVar12 + -0x10) = local_6c" (pointer_expression "*(undefined4 **)(puVar12 + -0x10)" (* "*") (cast_expression "(undefined4 **)(puVar12 + -0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_6c")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 1;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 1" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(size_t *)(puVar12 + -0x18) = sVar6;" (assignment_expression "*(size_t *)(puVar12 + -0x18) = sVar6" (pointer_expression "*(size_t *)(puVar12 + -0x18)" (* "*") (cast_expression "(size_t *)(puVar12 + -0x18)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x18)" (( "(") (binary_expression "puVar12 + -0x18" (identifier "puVar12") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "sVar6")) (; ";")) (expression_statement "*(uint *)(puVar12 + -0x1c) = local_50;" (assignment_expression "*(uint *)(puVar12 + -0x1c) = local_50" (pointer_expression "*(uint *)(puVar12 + -0x1c)" (* "*") (cast_expression "(uint *)(puVar12 + -0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x1c)" (( "(") (binary_expression "puVar12 + -0x1c" (identifier "puVar12") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*(int **)(puVar12 + -0x20) = local_68;" (assignment_expression "*(int **)(puVar12 + -0x20) = local_68" (pointer_expression "*(int **)(puVar12 + -0x20)" (* "*") (cast_expression "(int **)(puVar12 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0x20)" (( "(") (binary_expression "puVar12 + -0x20" (identifier "puVar12") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "local_68")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;" (assignment_expression "*(undefined4 *)(puVar12 + -0x24) = 0x1c84ac" (pointer_expression "*(undefined4 *)(puVar12 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x24)" (( "(") (binary_expression "puVar12 + -0x24" (identifier "puVar12") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x1c84ac")) (; ";")) (expression_statement "FUN_00174780();" (call_expression "FUN_00174780()" (identifier "FUN_00174780") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined1 ***)(puVar12 + -0xc) = local_60;" (assignment_expression "*(undefined1 ***)(puVar12 + -0xc) = local_60" (pointer_expression "*(undefined1 ***)(puVar12 + -0xc)" (* "*") (cast_expression "(undefined1 ***)(puVar12 + -0xc)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar12 + -0xc)" (( "(") (binary_expression "puVar12 + -0xc" (identifier "puVar12") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = local_5c;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = local_5c" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" (* "*") (cast_expression "(undefined1 ***)(puVar12 + -0x10)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_5c")) (; ";")) (expression_statement "local_30 = local_40;" (assignment_expression "local_30 = local_40" (identifier "local_30") (= "=") (identifier "local_40")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c84c3" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c84c3")) (; ";")) (expression_statement "local_34 = puVar15;" (assignment_expression "local_34 = puVar15" (identifier "local_34") (= "=") (identifier "puVar15")) (; ";")) (expression_statement "FUN_001c7520();" (call_expression "FUN_001c7520()" (identifier "FUN_001c7520") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "ppuVar16 = local_60;" (assignment_expression "ppuVar16 = local_60" (identifier "ppuVar16") (= "=") (identifier "local_60")) (; ";")) (expression_statement "local_50 = local_50 + sVar6 + 1;" (assignment_expression "local_50 = local_50 + sVar6 + 1" (identifier "local_50") (= "=") (binary_expression "local_50 + sVar6 + 1" (binary_expression "local_50 + sVar6" (identifier "local_50") (+ "+") (identifier "sVar6")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar15 = puVar15 + sVar6 + 1;" (assignment_expression "puVar15 = puVar15 + sVar6 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + sVar6 + 1" (binary_expression "puVar15 + sVar6" (identifier "puVar15") (+ "+") (identifier "sVar6")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_50 < local_58)" (( "(") (binary_expression "local_50 < local_58" (identifier "local_50") (< "<") (identifier "local_58")) () ")")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 ***)(puVar12 + -0xc) = local_60;" (assignment_expression "*(undefined1 ***)(puVar12 + -0xc) = local_60" (pointer_expression "*(undefined1 ***)(puVar12 + -0xc)" (* "*") (cast_expression "(undefined1 ***)(puVar12 + -0xc)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar12 + -0xc)" (( "(") (binary_expression "puVar12 + -0xc" (identifier "puVar12") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = local_5c;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = local_5c" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" (* "*") (cast_expression "(undefined1 ***)(puVar12 + -0x10)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_5c")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c84ef" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c84ef")) (; ";")) (expression_statement "local_34 = puVar15;" (assignment_expression "local_34 = puVar15" (identifier "local_34") (= "=") (identifier "puVar15")) (; ";")) (expression_statement "FUN_001c7520();" (call_expression "FUN_001c7520()" (identifier "FUN_001c7520") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_1[0x2d] = param_1[0x2d] + local_7c;" (assignment_expression "param_1[0x2d] = param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" (identifier "param_1") ([ "[") (number_literal "0x2d") (] "]")) (= "=") (binary_expression "param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" (identifier "param_1") ([ "[") (number_literal "0x2d") (] "]")) (+ "+") (identifier "local_7c"))) (; ";")) (expression_statement "param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);" (assignment_expression "param_1[0x2e] = (int)(puVar15 + param_1[0x2e])" (subscript_expression "param_1[0x2e]" (identifier "param_1") ([ "[") (number_literal "0x2e") (] "]")) (= "=") (cast_expression "(int)(puVar15 + param_1[0x2e])" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar15 + param_1[0x2e])" (( "(") (binary_expression "puVar15 + param_1[0x2e]" (identifier "puVar15") (+ "+") (subscript_expression "param_1[0x2e]" (identifier "param_1") ([ "[") (number_literal "0x2e") (] "]"))) () ")")))) (; ";")) (if_statement "if ((char)local_64 != '\0') {\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }" (if "if") (parenthesized_expression "((char)local_64 != '\0')" (( "(") (binary_expression "(char)local_64 != '\0'" (cast_expression "(char)local_64" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_64")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar2 = *param_2;\n      *(undefined1 **)(puVar12 + -8) = param_3;\n      *(int **)(puVar12 + -0xc) = param_2;\n      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;\n      pcVar3 = *(code **)(iVar2 + 0x40);\n      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;\n      (*pcVar3)();\n      puVar13 = local_34;\n      iVar2 = param_2[1];\n      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;\n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;\n      uVar5 = gettext();\n      *(undefined1 **)(puVar12 + -0xc) = puVar13;\n      *(int *)(puVar12 + -0x10) = iVar2;\n      *(undefined4 *)(puVar12 + -0x14) = uVar5;\n                    \n      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;\n      FUN_000654e0();\n      puVar13 = puVar12 + -4;\n      if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }\n    }" ({ "{") (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" (identifier "iVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(undefined1 **)(puVar12 + -8) = param_3;" (assignment_expression "*(undefined1 **)(puVar12 + -8) = param_3" (pointer_expression "*(undefined1 **)(puVar12 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar12 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -8)" (( "(") (binary_expression "puVar12 + -8" (identifier "puVar12") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(int **)(puVar12 + -0xc) = param_2;" (assignment_expression "*(int **)(puVar12 + -0xc) = param_2" (pointer_expression "*(int **)(puVar12 + -0xc)" (* "*") (cast_expression "(int **)(puVar12 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0xc)" (( "(") (binary_expression "puVar12 + -0xc" (identifier "puVar12") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = ppuVar16;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = ppuVar16" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" (* "*") (cast_expression "(undefined1 ***)(puVar12 + -0x10)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "ppuVar16")) (; ";")) (expression_statement "pcVar3 = *(code **)(iVar2 + 0x40);" (assignment_expression "pcVar3 = *(code **)(iVar2 + 0x40)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(iVar2 + 0x40)" (* "*") (cast_expression "(code **)(iVar2 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0x40)" (( "(") (binary_expression "iVar2 + 0x40" (identifier "iVar2") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c851c;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c851c" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c851c")) (; ";")) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar13 = local_34;" (assignment_expression "puVar13 = local_34" (identifier "puVar13") (= "=") (identifier "local_34")) (; ";")) (expression_statement "iVar2 = param_2[1];" (assignment_expression "iVar2 = param_2[1]" (identifier "iVar2") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;" (assignment_expression "*(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef" (pointer_expression "*(undefined ***)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined ***)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (binary_expression "local_54 + -0x3bbef" (identifier "local_54") (+ "+") (number_literal "-0x3bbef"))) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x18) = 0x1c8534;" (assignment_expression "*(undefined4 *)(puVar12 + -0x18) = 0x1c8534" (pointer_expression "*(undefined4 *)(puVar12 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x18)" (( "(") (binary_expression "puVar12 + -0x18" (identifier "puVar12") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x1c8534")) (; ";")) (expression_statement "uVar5 = gettext();" (assignment_expression "uVar5 = gettext()" (identifier "uVar5") (= "=") (call_expression "gettext()" (identifier "gettext") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined1 **)(puVar12 + -0xc) = puVar13;" (assignment_expression "*(undefined1 **)(puVar12 + -0xc) = puVar13" (pointer_expression "*(undefined1 **)(puVar12 + -0xc)" (* "*") (cast_expression "(undefined1 **)(puVar12 + -0xc)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0xc)" (( "(") (binary_expression "puVar12 + -0xc" (identifier "puVar12") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar13")) (; ";")) (expression_statement "*(int *)(puVar12 + -0x10) = iVar2;" (assignment_expression "*(int *)(puVar12 + -0x10) = iVar2" (pointer_expression "*(int *)(puVar12 + -0x10)" (* "*") (cast_expression "(int *)(puVar12 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = uVar5;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = uVar5" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x18) = 0x1c8544;" (assignment_expression "*(undefined4 *)(puVar12 + -0x18) = 0x1c8544" (pointer_expression "*(undefined4 *)(puVar12 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x18)" (( "(") (binary_expression "puVar12 + -0x18" (identifier "puVar12") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x1c8544")) (; ";")) (expression_statement "FUN_000654e0();" (call_expression "FUN_000654e0()" (identifier "FUN_000654e0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar13 = puVar12 + -4;" (assignment_expression "puVar13 = puVar12 + -4" (identifier "puVar13") (= "=") (binary_expression "puVar12 + -4" (identifier "puVar12") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (local_34 != local_2c) {\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }" (if "if") (parenthesized_expression "(local_34 != local_2c)" (( "(") (binary_expression "local_34 != local_2c" (identifier "local_34") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n        *(undefined1 **)(puVar12 + -0x14) = local_34;\n        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;\n        FUN_001e6db0();\n        puVar13 = puVar12 + -4;\n      }" ({ "{") (expression_statement "*(undefined1 **)(puVar12 + -0x14) = local_34;" (assignment_expression "*(undefined1 **)(puVar12 + -0x14) = local_34" (pointer_expression "*(undefined1 **)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined1 **)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "local_34")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x18) = 0x1c855a;" (assignment_expression "*(undefined4 *)(puVar12 + -0x18) = 0x1c855a" (pointer_expression "*(undefined4 *)(puVar12 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x18)" (( "(") (binary_expression "puVar12 + -0x18" (identifier "puVar12") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x1c855a")) (; ";")) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" (identifier "FUN_001e6db0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar13 = puVar12 + -4;" (assignment_expression "puVar13 = puVar12 + -4" (identifier "puVar13") (= "=") (binary_expression "puVar12 + -4" (identifier "puVar12") (+ "+") (number_literal "-4"))) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }" (else "else") (compound_statement "{\n    local_34 = (undefined1 *)0x0;\n    *(undefined1 ***)(puVar12 + -0xc) = &local_34;\n    *(undefined1 ***)(puVar12 + -0x10) = local_5c;\n    local_30 = 0;\n    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;\n    FUN_001c7520();\n    param_1[0x2d] = param_1[0x2d] + local_7c;\n  }" ({ "{") (expression_statement "local_34 = (undefined1 *)0x0;" (assignment_expression "local_34 = (undefined1 *)0x0" (identifier "local_34") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(undefined1 ***)(puVar12 + -0xc) = &local_34;" (assignment_expression "*(undefined1 ***)(puVar12 + -0xc) = &local_34" (pointer_expression "*(undefined1 ***)(puVar12 + -0xc)" (* "*") (cast_expression "(undefined1 ***)(puVar12 + -0xc)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar12 + -0xc)" (( "(") (binary_expression "puVar12 + -0xc" (identifier "puVar12") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "&local_34" (& "&") (identifier "local_34"))) (; ";")) (expression_statement "*(undefined1 ***)(puVar12 + -0x10) = local_5c;" (assignment_expression "*(undefined1 ***)(puVar12 + -0x10) = local_5c" (pointer_expression "*(undefined1 ***)(puVar12 + -0x10)" (* "*") (cast_expression "(undefined1 ***)(puVar12 + -0x10)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_5c")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;" (assignment_expression "*(undefined4 *)(puVar12 + -0x14) = 0x1c86bd" (pointer_expression "*(undefined4 *)(puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c86bd")) (; ";")) (expression_statement "FUN_001c7520();" (call_expression "FUN_001c7520()" (identifier "FUN_001c7520") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_1[0x2d] = param_1[0x2d] + local_7c;" (assignment_expression "param_1[0x2d] = param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" (identifier "param_1") ([ "[") (number_literal "0x2d") (] "]")) (= "=") (binary_expression "param_1[0x2d] + local_7c" (subscript_expression "param_1[0x2d]" (identifier "param_1") ([ "[") (number_literal "0x2d") (] "]")) (+ "+") (identifier "local_7c"))) (; ";")) (} "}")))) (if_statement "if ((char)param_1[0xd] != '\0') {\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }" (if "if") (parenthesized_expression "((char)param_1[0xd] != '\0')" (( "(") (binary_expression "(char)param_1[0xd] != '\0'" (cast_expression "(char)param_1[0xd]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *(undefined1 **)(puVar13 + -8) = param_3;\n    *(int **)(puVar13 + -0xc) = param_2;\n    *(int **)(puVar13 + -0x10) = param_1;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;\n    FUN_001c5140();\n  }" ({ "{") (expression_statement "*(undefined1 **)(puVar13 + -8) = param_3;" (assignment_expression "*(undefined1 **)(puVar13 + -8) = param_3" (pointer_expression "*(undefined1 **)(puVar13 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar13 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + -8)" (( "(") (binary_expression "puVar13 + -8" (identifier "puVar13") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(int **)(puVar13 + -0xc) = param_2;" (assignment_expression "*(int **)(puVar13 + -0xc) = param_2" (pointer_expression "*(int **)(puVar13 + -0xc)" (* "*") (cast_expression "(int **)(puVar13 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + -0xc)" (( "(") (binary_expression "puVar13 + -0xc" (identifier "puVar13") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int **)(puVar13 + -0x10) = param_1;" (assignment_expression "*(int **)(puVar13 + -0x10) = param_1" (pointer_expression "*(int **)(puVar13 + -0x10)" (* "*") (cast_expression "(int **)(puVar13 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + -0x10)" (( "(") (binary_expression "puVar13 + -0x10" (identifier "puVar13") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar13 + -0x14) = 0x1c85af;" (assignment_expression "*(undefined4 *)(puVar13 + -0x14) = 0x1c85af" (pointer_expression "*(undefined4 *)(puVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + -0x14)" (( "(") (binary_expression "puVar13 + -0x14" (identifier "puVar13") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c85af")) (; ";")) (expression_statement "FUN_001c5140();" (call_expression "FUN_001c5140()" (identifier "FUN_001c5140") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if ((local_49 != '\0') && (local_78 != 0)) {\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }" (if "if") (parenthesized_expression "((local_49 != '\0') && (local_78 != 0))" (( "(") (binary_expression "(local_49 != '\0') && (local_78 != 0)" (parenthesized_expression "(local_49 != '\0')" (( "(") (binary_expression "local_49 != '\0'" (identifier "local_49") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(local_78 != 0)" (( "(") (binary_expression "local_78 != 0" (identifier "local_78") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    *(uint *)(puVar13 + -0x10) = local_78;\n    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;\n    FUN_001e6d50();\n  }" ({ "{") (expression_statement "*(uint *)(puVar13 + -0x10) = local_78;" (assignment_expression "*(uint *)(puVar13 + -0x10) = local_78" (pointer_expression "*(uint *)(puVar13 + -0x10)" (* "*") (cast_expression "(uint *)(puVar13 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + -0x10)" (( "(") (binary_expression "puVar13 + -0x10" (identifier "puVar13") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_78")) (; ";")) (expression_statement "*(undefined4 *)(puVar13 + -0x14) = 0x1c857f;" (assignment_expression "*(undefined4 *)(puVar13 + -0x14) = 0x1c857f" (pointer_expression "*(undefined4 *)(puVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + -0x14)" (( "(") (binary_expression "puVar13 + -0x14" (identifier "puVar13") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1c857f")) (; ";")) (expression_statement "FUN_001e6d50();" (call_expression "FUN_001e6d50()" (identifier "FUN_001e6d50") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: bool do_add_input_section(Output_merge_string<char> * this, Relobj *
   object, uint shndx) */

bool __thiscall
var_27::type_1<char>::function_1
          (type_1<char> *this,type_2 *object,type_3 shndx)

{
  type_4 *puVar1;
  type_5 *var_3;
  type_6 pcVar3;
  type_6 var_20;
  type_5 **pp_Var5;
  type_7 KVar6;
  type_8 *pMVar7;
  char *format;
  size_t var_23;
  type_9 uVar9;
  type_10 uVar10;
  type_6 var_28;
  type_3 var_24;
  type_3 var_25;
  type_9 extraout_EDX;
  type_6 var_30;
  type_10 *var_15;
  type_10 *var_38;
  type_3 *puVar17;
  type_4 *var_13;
  type_2 *pRVar19;
  type_8 *pMVar20;
  type_3 var_22;
  type_6 var_29;
  type_10 auStack_80 [4];
  type_3 var_37;
  type_4 *var_6;
  type_3 var_34;
  type_4 *var_33;
  type_6 local_6c;
  var_1<var_2> *local_68;
  type_3 var_31;
  type_8 *local_60;
  type_11 *local_5c;
  type_4 *var_12;
  type_12 **var_9;
  type_4 *var_14;
  bool var_40;
  type_13 var_7;
  type_8 *merged_strings_list;
  type_7 var_32;
  uint64_t addralign;
  type_8 local_34;
  
  var_9 = &_GLOBAL_OFFSET_TABLE_;
  var_3 = (this->super_Output_merge_base).super_Output_section_data.super_Output_data.
           _vptr_Output_data[3];
  if (var_3 == var_4::do_addralign) {
    addralign._4_4_ =
         *(type_9 *)
          ((int)&(this->super_Output_merge_base).super_Output_section_data.addralign_ + 4);
    addralign._0_4_ = (int)(this->super_Output_merge_base).super_Output_section_data.addralign_;
  }
  else {
    addralign._0_4_ = (*var_3)(this);
    addralign._4_4_ = extraout_EDX;
  }
  var_6 = Object::var_5
                       (&object->super_Object,shndx,&var_7,&var_40,&addralign);
  var_12 = var_6 + var_7;
  puVar17 = &var_37;
  if (var_12[-1] == '\0') {
LAB_001c8590:
    var_14 = var_12;
    var_15 = (type_10 *)puVar17;
  }
  else {
    (*(object->super_Object)._vptr_Object[0x10])(&local_34,object,shndx);
    pRVar19 = local_34.object;
    pcVar3 = (object->super_Object).name_._M_dataplus._M_p;
    format = (char *)var_8(var_9 + -0x3bc00);
                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */
    var_10(format,pcVar3,pRVar19);
    if (local_34.object != (type_2 *)&local_34.merged_strings) {
      var_11(local_34.object);
    }
    var_15 = auStack_80;
    puVar17 = (type_3 *)auStack_80;
    if ((var_12 <= var_6) ||
       (puVar17 = (type_3 *)auStack_80, var_13 = var_12, var_12[-1] == '\0')) goto LAB_001c8590;
    do {
      var_14 = var_13 + -1;
      if (var_6 == var_14) {
        var_14 = var_6;
        var_15 = auStack_80;
        break;
      }
      puVar1 = var_13 + -2;
      var_13 = var_14;
    } while (*puVar1 != '\0');
  }
  *(type_9 *)(var_15 + -0x10) = 0x14;
  *(type_9 *)(var_15 + -0x14) = 0x1c8350;
  merged_strings_list = (type_8 *)var_16(*(type_3 *)(var_15 + -0x10));
  (merged_strings_list->merged_strings).
  super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
  ._M_impl._M_start = (type_6)0x0;
  merged_strings_list->object = object;
  (merged_strings_list->merged_strings).
  super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
  ._M_impl._M_finish = (type_6)0x0;
  var_20 = (this->merged_strings_lists_).
            super__Vector_base<var_27::type_1<var_2>::type_8*,_std::allocator<var_27::type_1<var_2>::type_8*>var_18>
            ._M_impl._M_finish;
  merged_strings_list->shndx = shndx;
  (merged_strings_list->merged_strings).
  super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
  ._M_impl._M_end_of_storage = (type_6)0x0;
  if (var_20 ==
      (this->merged_strings_lists_).
      super__Vector_base<var_27::type_1<var_2>::type_8*,_std::allocator<var_27::type_1<var_2>::type_8*>var_18>
      ._M_impl._M_end_of_storage) {
    *(type_8 ***)(var_15 + -8) = &merged_strings_list;
    *(type_6 *)(var_15 + -0xc) = var_20;
    *(type_14 **)(var_15 + -0x10) = &this->merged_strings_lists_;
    *(type_9 *)(var_15 + -0x14) = 0x1c8696;
    std::
    vector<var_27::type_1<var_2>::type_8*,_std::allocator<var_27::type_1<var_2>::type_8*>var_18>
    ::_M_realloc_insert<var_27::type_1<var_2>::type_8*var_19&>
              (*(vector<var_27::type_1<var_2>::type_8*,_std::allocator<var_27::type_1<var_2>::type_8*>var_18>
                 **)(var_15 + -0x10),(iterator)*(type_8 ***)(var_15 + -0xc),
               *(type_8 ***)(var_15 + -8));
  }
  else {
    *var_20 = merged_strings_list;
    (this->merged_strings_lists_).
    super__Vector_base<var_27::type_1<var_2>::type_8*,_std::allocator<var_27::type_1<var_2>::type_8*>var_18>
    ._M_impl._M_finish = var_20 + 1;
  }
  local_5c = &merged_strings_list->merged_strings;
  if (var_6 < var_14) {
    local_60 = merged_strings_list;
    var_22 = 0;
    var_13 = var_6;
    do {
      *(type_4 **)(var_15 + -0x10) = var_13;
      *(type_9 *)(var_15 + -0x14) = 0x1c83cc;
      var_23 = var_21(*(char **)(var_15 + -0x10));
      pMVar20 = local_60;
      var_24 = var_22 + 1;
      if (var_23 != 0) {
        var_24 = var_22 + 2;
        var_22 = var_22 + 1;
      }
      var_13 = var_13 + var_23 + 1;
    } while (var_13 < var_14);
    var_25 = var_24;
    var_37 = var_22;
    if (var_14 < var_12) {
      var_25 = var_24 + 1;
      var_37 = var_24;
    }
    if (0x1fffffff < var_25) {
      *(int *)(var_15 + -0x10) = (int)var_9 + -0x10ea7d;
                    /* WARNING: Subroutine does not return */
      *(type_10 **)(var_15 + -0x14) = &LAB_001c8729;
      std::var_26(*(char **)(var_15 + -0x10));
    }
    var_28 = (local_60->merged_strings).
              super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
              ._M_impl._M_start;
    if (var_25 <= (type_3)((int)(local_60->merged_strings).
                              super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
                              ._M_impl._M_end_of_storage - (int)var_28 >> 3)) goto LAB_001c8419;
    var_29 = (local_60->merged_strings).
              super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
              ._M_impl._M_finish;
    local_68 = (var_1<var_2> *)((int)var_29 - (int)var_28);
    var_31 = var_25 * 8;
    if (var_25 != 0) goto LAB_001c85d4;
    local_60 = (type_8 *)0x0;
    pMVar7 = local_60;
    var_30 = var_28;
  }
  else {
    var_28 = (merged_strings_list->merged_strings).
              super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
              ._M_impl._M_start;
    var_37 = (type_3)(var_14 < var_12);
    var_22 = ~-(type_3)(var_14 < var_12) + 2;
    if (var_22 <= (type_3)((int)(merged_strings_list->merged_strings).
                              super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
                              ._M_impl._M_end_of_storage - (int)var_28 >> 3)) goto LAB_001c8419;
    var_29 = (merged_strings_list->merged_strings).
              super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
              ._M_impl._M_finish;
    var_31 = var_22 * 8;
    local_68 = (var_1<var_2> *)((int)var_29 - (int)var_28);
    pMVar20 = merged_strings_list;
LAB_001c85d4:
    *(type_3 *)(var_15 + -0x10) = var_31;
    *(type_9 *)(var_15 + -0x14) = 0x1c85e5;
    local_6c = var_28;
    local_60 = (type_8 *)var_16(*(type_3 *)(var_15 + -0x10));
    var_28 = local_6c;
    pMVar7 = local_60;
    var_30 = (pMVar20->merged_strings).
              super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
              ._M_impl._M_start;
  }
  for (; var_28 != var_29; var_28 = var_28 + 1) {
    KVar6 = var_28->stringpool_key;
    pMVar7->object = (type_2 *)var_28->offset;
    pMVar7->shndx = KVar6;
    local_6c = var_30;
    pMVar7 = (type_8 *)&pMVar7->merged_strings;
  }
  if (var_30 != (type_6)0x0) {
    *(type_6 *)(var_15 + -0x10) = var_30;
    *(type_9 *)(var_15 + -0x14) = 0x1c8628;
    var_11(*(void **)(var_15 + -0x10));
  }
  (pMVar20->merged_strings).
  super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
  ._M_impl._M_start = (type_6)local_60;
  (pMVar20->merged_strings).
  super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
  ._M_impl._M_finish = (type_6)((int)&(local_68->string_set_)._M_h._M_buckets + (int)local_60);
  (pMVar20->merged_strings).
  super__Vector_base<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
  ._M_impl._M_end_of_storage = (type_6)((int)&local_60->object + var_31);
LAB_001c8419:
  var_13 = var_14;
  var_34 = (int)addralign - 1U & (type_3)var_6;
  var_38 = var_15;
  if (var_6 < var_12) {
    var_31 = var_31 & 0xffffff00;
    local_68 = &this->stringpool_;
    local_60 = &local_34;
    local_6c = (type_6)&var_32;
    var_14 = var_6;
    var_33 = var_13;
    pRVar19 = (type_2 *)0x0;
    do {
      var_23 = (int)var_12 - (int)var_14;
      if (var_14 < var_33) {
        *(type_4 **)(var_15 + -0x10) = var_14;
        *(type_9 *)(var_15 + -0x14) = 0x1c8471;
        var_23 = var_21(*(char **)(var_15 + -0x10));
      }
      if (var_23 != 0) {
        uVar10 = (char)var_31;
        if (((int)addralign - 1U & (type_3)var_14) != var_34) {
          uVar10 = 1;
        }
        var_31 = var_35(var_31._1_3_,uVar10);
      }
      *(type_6 *)(var_15 + -0x10) = local_6c;
      *(type_9 *)(var_15 + -0x14) = 1;
      *(size_t *)(var_15 + -0x18) = var_23;
      *(type_4 **)(var_15 + -0x1c) = var_14;
      *(var_1<var_2> **)(var_15 + -0x20) = local_68;
      *(type_9 *)(var_15 + -0x24) = 0x1c84ac;
      var_1<var_2>::var_36
                (*(var_1<var_2> **)(var_15 + -0x20),*(char **)(var_15 + -0x1c),
                 *(size_t *)(var_15 + -0x18),(bool)var_15[-0x14],*(type_7 **)(var_15 + -0x10));
      *(type_8 **)(var_15 + -0xc) = local_60;
      *(type_11 **)(var_15 + -0x10) = local_5c;
      local_34.shndx = var_32;
      *(type_9 *)(var_15 + -0x14) = 0x1c84c3;
      local_34.object = pRVar19;
      std::
      vector<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
      ::emplace_back<var_27::type_1<var_2>::var_17>
                (*(vector<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
                   **)(var_15 + -0x10),*(var_17 **)(var_15 + -0xc));
      pMVar20 = local_60;
      var_14 = var_14 + var_23 + 1;
      pRVar19 = (type_2 *)((int)&(pRVar19->super_Object)._vptr_Object + var_23 + 1);
    } while (var_14 < var_12);
    local_34.shndx = 0;
    *(type_8 **)(var_15 + -0xc) = local_60;
    *(type_11 **)(var_15 + -0x10) = local_5c;
    *(type_9 *)(var_15 + -0x14) = 0x1c84ef;
    local_34.object = pRVar19;
    std::
    vector<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
    ::emplace_back<var_27::type_1<var_2>::var_17>
              (*(vector<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
                 **)(var_15 + -0x10),*(var_17 **)(var_15 + -0xc));
    this->input_count_ = this->input_count_ + var_37;
    this->input_size_ = (size_t)((int)&(pRVar19->super_Object)._vptr_Object + this->input_size_);
    if ((char)var_31 != '\0') {
      pp_Var5 = (object->super_Object)._vptr_Object;
      *(type_3 *)(var_15 + -8) = shndx;
      *(type_2 **)(var_15 + -0xc) = object;
      *(type_8 **)(var_15 + -0x10) = pMVar20;
      var_3 = pp_Var5[0x10];
      *(type_9 *)(var_15 + -0x14) = 0x1c851c;
      (*var_3)();
      pRVar19 = local_34.object;
      pcVar3 = (object->super_Object).name_._M_dataplus._M_p;
      *(type_12 ***)(var_15 + -0x14) = var_9 + -0x3bbef;
      *(type_9 *)(var_15 + -0x18) = 0x1c8534;
      uVar9 = var_8();
      *(type_2 **)(var_15 + -0xc) = pRVar19;
      *(type_6 *)(var_15 + -0x10) = pcVar3;
      *(type_9 *)(var_15 + -0x14) = uVar9;
                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */
      *(type_9 *)(var_15 + -0x18) = 0x1c8544;
      var_10(*(char **)(var_15 + -0x14));
      var_38 = var_15 + -4;
      if (local_34.object != (type_2 *)&local_34.merged_strings) {
        *(type_2 **)(var_15 + -0x14) = local_34.object;
        *(type_9 *)(var_15 + -0x18) = 0x1c855a;
        var_11(*(void **)(var_15 + -0x14));
        var_38 = var_15 + -4;
      }
    }
  }
  else {
    local_34.object = (type_2 *)0x0;
    *(type_8 **)(var_15 + -0xc) = &local_34;
    *(type_11 **)(var_15 + -0x10) = local_5c;
    local_34.shndx = 0;
    *(type_9 *)(var_15 + -0x14) = 0x1c86bd;
    std::
    vector<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
    ::emplace_back<var_27::type_1<var_2>::var_17>
              (*(vector<var_27::type_1<var_2>::var_17,_std::allocator<var_27::type_1<var_2>::var_17>var_18>
                 **)(var_15 + -0x10),*(var_17 **)(var_15 + -0xc));
    this->input_count_ = this->input_count_ + var_37;
  }
  if ((this->super_Output_merge_base).keeps_input_sections_ != false) {
    *(type_3 *)(var_38 + -8) = shndx;
    *(type_2 **)(var_38 + -0xc) = object;
    *(type_1<var_2> **)(var_38 + -0x10) = this;
    *(type_9 *)(var_38 + -0x14) = 0x1c85af;
    Output_merge_base::var_39
              (*(type_15 **)(var_38 + -0x10),*(type_2 **)(var_38 + -0xc),
               *(type_3 *)(var_38 + -8));
  }
  if ((var_40 != false) && (var_6 != (type_4 *)0x0)) {
    *(type_4 **)(var_38 + -0x10) = var_6;
    *(type_9 *)(var_38 + -0x14) = 0x1c857f;
    var_41(*(void **)(var_38 + -0x10));
  }
  return true;
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

undefined4 MASKED(int *param_1,int *param_2,undefined1 *param_3)

{
  char *pcVar1;
  int iVar2;
  code *pcVar3;
  undefined1 **ppuVar4;
  undefined4 uVar5;
  size_t sVar6;
  undefined1 uVar7;
  undefined4 *puVar8;
  uint uVar9;
  uint uVar10;
  undefined4 *puVar11;
  undefined1 *puVar12;
  undefined1 *puVar13;
  uint *puVar14;
  undefined1 *puVar15;
  undefined1 **ppuVar16;
  uint uVar17;
  undefined4 *puVar18;
  undefined1 auStack_80 [4];
  uint local_7c;
  uint local_78;
  uint local_74;
  uint local_70;
  undefined4 *local_6c;
  int *local_68;
  uint local_64;
  undefined1 **local_60;
  undefined1 **local_5c;
  uint local_58;
  undefined **local_54;
  uint local_50;
  char local_49;
  int local_48;
  undefined1 **local_44;
  undefined4 local_40;
  undefined8 local_3c;
  undefined1 *local_34;
  undefined4 local_30;
  undefined1 local_2c [28];
  
  local_54 = &__DT_PLTGOT;
  if (*(code **)(*param_1 + 0xc) == FUN_000735e0) {
    local_3c = *(undefined8 *)(param_1 + 9);
  }
  else {
    local_3c = (**(code **)(*param_1 + 0xc))(param_1);
  }
  local_78 = FUN_000b1f60(param_2,param_3,&local_48,&local_49,&local_3c);
  local_58 = local_78 + local_48;
  puVar14 = &local_7c;
  if (*(char *)(local_58 - 1) == '\0') {
LAB_001c8590:
    local_50 = local_58;
    puVar12 = (undefined1 *)puVar14;
  }
  else {
    (**(code **)(*param_2 + 0x40))(&local_34,param_2,param_3);
    puVar12 = local_34;
    iVar2 = param_2[1];
    uVar5 = gettext(local_54 + -0x3bc00);
                    /* try { // try from 001c82e9 to 001c82ed has its CatchHandler @ 001c872d */
    FUN_000654e0(uVar5,iVar2,puVar12);
    if (local_34 != local_2c) {
      FUN_001e6db0(local_34);
    }
    puVar12 = auStack_80;
    puVar14 = (uint *)auStack_80;
    if ((local_58 <= local_78) ||
       (puVar14 = (uint *)auStack_80, uVar10 = local_58, *(char *)(local_58 - 1) == '\0'))
    goto LAB_001c8590;
    do {
      local_50 = uVar10 - 1;
      if (local_78 == local_50) {
        local_50 = local_78;
        puVar12 = auStack_80;
        break;
      }
      pcVar1 = (char *)(uVar10 - 2);
      uVar10 = local_50;
    } while (*pcVar1 != '\0');
  }
  *(undefined4 *)(puVar12 + -0x10) = 0x14;
  *(undefined4 *)(puVar12 + -0x14) = 0x1c8350;
  local_44 = (undefined1 **)FUN_001e5200();
  local_44[2] = (undefined1 *)0x0;
  *local_44 = (undefined1 *)param_2;
  local_44[3] = (undefined1 *)0x0;
  puVar8 = (undefined4 *)param_1[0x2b];
  local_44[1] = param_3;
  local_44[4] = (undefined1 *)0x0;
  if (puVar8 == (undefined4 *)param_1[0x2c]) {
    *(undefined1 ****)(puVar12 + -8) = &local_44;
    *(undefined4 **)(puVar12 + -0xc) = puVar8;
    *(int **)(puVar12 + -0x10) = param_1 + 0x2a;
    *(undefined4 *)(puVar12 + -0x14) = 0x1c8696;
    FUN_001c6ec0();
  }
  else {
    *puVar8 = local_44;
    param_1[0x2b] = (int)(puVar8 + 1);
  }
  local_5c = local_44 + 2;
  if (local_78 < local_50) {
    local_60 = local_44;
    uVar17 = 0;
    uVar10 = local_78;
    do {
      *(uint *)(puVar12 + -0x10) = uVar10;
      *(undefined4 *)(puVar12 + -0x14) = 0x1c83cc;
      sVar6 = strlen(*(char **)(puVar12 + -0x10));
      ppuVar16 = local_60;
      uVar9 = uVar17 + 1;
      if (sVar6 != 0) {
        uVar9 = uVar17 + 2;
        uVar17 = uVar17 + 1;
      }
      uVar10 = uVar10 + 1 + sVar6;
    } while (uVar10 < local_50);
    uVar10 = uVar9;
    local_7c = uVar17;
    if (local_50 < local_58) {
      uVar10 = uVar9 + 1;
      local_7c = uVar9;
    }
    if (0x1fffffff < uVar10) {
      *(int *)(puVar12 + -0x10) = (int)local_54 + -0x10ea7d;
                    /* WARNING: Subroutine does not return */
      *(undefined1 **)(puVar12 + -0x14) = &LAB_001c8729;
      FUN_0022c7a0();
    }
    puVar8 = (undefined4 *)local_60[2];
    if (uVar10 <= (uint)((int)local_60[4] - (int)puVar8 >> 3)) goto LAB_001c8419;
    puVar18 = (undefined4 *)local_60[3];
    local_68 = (int *)((int)puVar18 - (int)puVar8);
    local_64 = uVar10 * 8;
    if (uVar10 != 0) goto LAB_001c85d4;
    local_60 = (undefined1 **)0x0;
    ppuVar4 = local_60;
    puVar11 = puVar8;
  }
  else {
    puVar8 = (undefined4 *)local_44[2];
    local_7c = (uint)(local_50 < local_58);
    uVar10 = ~-(uint)(local_50 < local_58) + 2;
    if (uVar10 <= (uint)((int)local_44[4] - (int)puVar8 >> 3)) goto LAB_001c8419;
    puVar18 = (undefined4 *)local_44[3];
    local_64 = uVar10 * 8;
    local_68 = (int *)((int)puVar18 - (int)puVar8);
    ppuVar16 = local_44;
LAB_001c85d4:
    *(uint *)(puVar12 + -0x10) = local_64;
    *(undefined4 *)(puVar12 + -0x14) = 0x1c85e5;
    local_6c = puVar8;
    local_60 = (undefined1 **)FUN_001e5200();
    puVar8 = local_6c;
    ppuVar4 = local_60;
    puVar11 = (undefined4 *)ppuVar16[2];
  }
  for (; puVar8 != puVar18; puVar8 = puVar8 + 2) {
    puVar13 = (undefined1 *)puVar8[1];
    *ppuVar4 = (undefined1 *)*puVar8;
    ppuVar4[1] = puVar13;
    local_6c = puVar11;
    ppuVar4 = ppuVar4 + 2;
  }
  if (puVar11 != (undefined4 *)0x0) {
    *(undefined4 **)(puVar12 + -0x10) = puVar11;
    *(undefined4 *)(puVar12 + -0x14) = 0x1c8628;
    FUN_001e6db0();
  }
  ppuVar16[2] = (undefined1 *)local_60;
  ppuVar16[3] = (undefined1 *)((int)local_68 + (int)local_60);
  ppuVar16[4] = (undefined1 *)(local_64 + (int)local_60);
LAB_001c8419:
  uVar10 = local_50;
  local_74 = (int)local_3c - 1U & local_78;
  puVar13 = puVar12;
  if (local_78 < local_58) {
    local_64 = local_64 & 0xffffff00;
    local_68 = param_1 + 0x17;
    local_60 = &local_34;
    local_6c = &local_40;
    local_50 = local_78;
    local_70 = uVar10;
    puVar15 = (undefined1 *)0x0;
    do {
      sVar6 = local_58 - local_50;
      if (local_50 < local_70) {
        *(uint *)(puVar12 + -0x10) = local_50;
        *(undefined4 *)(puVar12 + -0x14) = 0x1c8471;
        sVar6 = strlen(*(char **)(puVar12 + -0x10));
      }
      if (sVar6 != 0) {
        uVar7 = (char)local_64;
        if (((int)local_3c - 1U & local_50) != local_74) {
          uVar7 = 1;
        }
        local_64 = CONCAT31(local_64._1_3_,uVar7);
      }
      *(undefined4 **)(puVar12 + -0x10) = local_6c;
      *(undefined4 *)(puVar12 + -0x14) = 1;
      *(size_t *)(puVar12 + -0x18) = sVar6;
      *(uint *)(puVar12 + -0x1c) = local_50;
      *(int **)(puVar12 + -0x20) = local_68;
      *(undefined4 *)(puVar12 + -0x24) = 0x1c84ac;
      FUN_00174780();
      *(undefined1 ***)(puVar12 + -0xc) = local_60;
      *(undefined1 ***)(puVar12 + -0x10) = local_5c;
      local_30 = local_40;
      *(undefined4 *)(puVar12 + -0x14) = 0x1c84c3;
      local_34 = puVar15;
      FUN_001c7520();
      ppuVar16 = local_60;
      local_50 = local_50 + sVar6 + 1;
      puVar15 = puVar15 + sVar6 + 1;
    } while (local_50 < local_58);
    local_30 = 0;
    *(undefined1 ***)(puVar12 + -0xc) = local_60;
    *(undefined1 ***)(puVar12 + -0x10) = local_5c;
    *(undefined4 *)(puVar12 + -0x14) = 0x1c84ef;
    local_34 = puVar15;
    FUN_001c7520();
    param_1[0x2d] = param_1[0x2d] + local_7c;
    param_1[0x2e] = (int)(puVar15 + param_1[0x2e]);
    if ((char)local_64 != '\0') {
      iVar2 = *param_2;
      *(undefined1 **)(puVar12 + -8) = param_3;
      *(int **)(puVar12 + -0xc) = param_2;
      *(undefined1 ***)(puVar12 + -0x10) = ppuVar16;
      pcVar3 = *(code **)(iVar2 + 0x40);
      *(undefined4 *)(puVar12 + -0x14) = 0x1c851c;
      (*pcVar3)();
      puVar13 = local_34;
      iVar2 = param_2[1];
      *(undefined ***)(puVar12 + -0x14) = local_54 + -0x3bbef;
      *(undefined4 *)(puVar12 + -0x18) = 0x1c8534;
      uVar5 = gettext();
      *(undefined1 **)(puVar12 + -0xc) = puVar13;
      *(int *)(puVar12 + -0x10) = iVar2;
      *(undefined4 *)(puVar12 + -0x14) = uVar5;
                    /* try { // try from 001c853f to 001c8543 has its CatchHandler @ 001c8729 */
      *(undefined4 *)(puVar12 + -0x18) = 0x1c8544;
      FUN_000654e0();
      puVar13 = puVar12 + -4;
      if (local_34 != local_2c) {
        *(undefined1 **)(puVar12 + -0x14) = local_34;
        *(undefined4 *)(puVar12 + -0x18) = 0x1c855a;
        FUN_001e6db0();
        puVar13 = puVar12 + -4;
      }
    }
  }
  else {
    local_34 = (undefined1 *)0x0;
    *(undefined1 ***)(puVar12 + -0xc) = &local_34;
    *(undefined1 ***)(puVar12 + -0x10) = local_5c;
    local_30 = 0;
    *(undefined4 *)(puVar12 + -0x14) = 0x1c86bd;
    FUN_001c7520();
    param_1[0x2d] = param_1[0x2d] + local_7c;
  }
  if ((char)param_1[0xd] != '\0') {
    *(undefined1 **)(puVar13 + -8) = param_3;
    *(int **)(puVar13 + -0xc) = param_2;
    *(int **)(puVar13 + -0x10) = param_1;
    *(undefined4 *)(puVar13 + -0x14) = 0x1c85af;
    FUN_001c5140();
  }
  if ((local_49 != '\0') && (local_78 != 0)) {
    *(uint *)(puVar13 + -0x10) = local_78;
    *(undefined4 *)(puVar13 + -0x14) = 0x1c857f;
    FUN_001e6d50();
  }
  return 1;
}

