
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "STB": Some values do not have unique names */
/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: resolve<32, true>
   DWARF original prototype: void resolve<32,_true>(Symbol_table * this, Sized_symbol<32> * to,
   Sym<32,_true> * sym, uint st_shndx, bool is_ordinary, uint orig_st_shndx, Object * object, char *
   version, bool is_default_version) */

void __thiscall
gold::Symbol_table::resolve<32,_true>
          (Symbol_table *this,Sized_symbol<32> *to,Sym<32,_true> *sym,uint st_shndx,bool is_ordinary
          ,uint orig_st_shndx,Object *object,char *version,bool is_default_version)

{
  undefined1 *puVar1;
  byte bVar2;
  uint uVar3;
  Target *pTVar4;
  Object *pOVar5;
  Sym_data<32> *pSVar6;
  Output_segment *pOVar7;
  _Hash_node_base *p_Var8;
  pointer ppOVar9;
  anon_union_4_3_b0f6f408_for_u1_ aVar10;
  char cVar11;
  bool bVar12;
  byte bVar13;
  int iVar14;
  General_options *pGVar15;
  STT SVar16;
  uint uVar17;
  char *pcVar18;
  STT SVar19;
  Symbol_table *pSVar20;
  Symbol_table *pSVar21;
  bool *local_74;
  bool *local_70;
  byte local_64;
  undefined1 local_54 [12];
  __node_gen_type __node_gen;
  bool adjust_common_sizes;
  uint local_40;
  __bucket_type local_3c;
  undefined4 local_38;
  bool adjust_dyndef;
  uint local_30;
  _func_int_varargs **local_2c;
  _Alloc_hider local_28;
  
  if (((to->super_Symbol).field_0x2a & 7) != 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx");
  }
  local_64 = (byte)(to->super_Symbol).field_0x2b >> 5 & 1;
  uVar3 = (to->super_Symbol).u2_.shndx;
  if (object == (to->super_Symbol).u1_.object) {
    if (local_64 == 0) {
      bVar12 = Symbol::is_common_shndx(uVar3);
      if ((bVar12) || (!is_ordinary)) goto LAB_00165abe;
    }
    else if ((uVar3 != 0) && ((is_ordinary && (st_shndx == uVar3)))) goto LAB_00165d65;
  }
  else {
LAB_00165abe:
    if ((st_shndx == 0xfff1 && !is_ordinary) && ((local_64 == 0 && (uVar3 == 0xfff1)))) {
LAB_00165d65:
      uVar17 = sym->p_->st_value;
      if ((uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18) ==
          to->value_) {
        return;
      }
    }
  }
  pTVar4 = parameters->target_;
  if (pTVar4 == (Target *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x69,"target");
  }
  if ((*(char *)(*(int *)(pTVar4 + 4) + 0xd) == '\0') ||
     (cVar11 = (**(code **)(*(int *)pTVar4 + 0xa4))(pTVar4,to,sym,object,version), cVar11 == '\0'))
  {
    if ((object->field_0x2c & 1) == 0) {
      if (((sym->p_->st_info & 0xf) == 5) &&
         ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {
        if (((to->super_Symbol).field_0x2a & 7) == 0) {
          ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].
                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                    _M_impl._M_finish;
          Symbol::demangled_name(&to->super_Symbol);
          aVar10 = _adjust_dyndef;
          pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section");
                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */
          gold_warning(pcVar18,aVar10.object,ppOVar9);
          if (_adjust_dyndef == (Object *)&local_2c) {
            return;
          }
          operator_delete(_adjust_dyndef);
          return;
        }
        goto LAB_001661e5;
      }
      puVar1 = &(to->super_Symbol).field_0x2a;
      *puVar1 = *puVar1 | 0x80;
      iVar14 = (*object->_vptr_Object[5])(object);
    }
    else {
      if ((st_shndx == 0) && (((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2)) {
        return;
      }
      puVar1 = &(to->super_Symbol).field_0x2b;
      *puVar1 = *puVar1 | 1;
      iVar14 = (*object->_vptr_Object[5])(object);
    }
    if ((iVar14 == 0) && ((object->field_0x2c & 1) == 0)) {
      puVar1 = &(to->super_Symbol).field_0x2b;
      *puVar1 = *puVar1 | 0x40;
    }
    if ((((to->super_Symbol).field_0x2a & 7) == 0) &&
       (pOVar5 = (to->super_Symbol).u1_.object, iVar14 = (*pOVar5->_vptr_Object[5])(pOVar5),
       iVar14 != 0)) {
      pGVar15 = parameters->options_;
      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;
      if (pGVar15->plugins_->in_replacement_phase_ != false) {
        if ((((((to->super_Symbol).field_0x2a & 7) != 0) ||
             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||
            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)) ||
           ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {
          override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);
          return;
        }
        uVar3 = to->symsize_;
        uVar17 = to->value_;
        override<32,_true>(this,to,sym,st_shndx,false,object,version);
        if (to->symsize_ < uVar3) {
          to->symsize_ = uVar3;
        }
        if (uVar17 <= to->value_) {
          return;
        }
        to->value_ = uVar17;
        return;
      }
    }
    else {
      pGVar15 = parameters->options_;
      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;
    }
    if ((pGVar15->detect_odr_violations_).value != false) {
      pSVar6 = sym->p_;
      if ((((int)(uint)pSVar6->st_info >> 4 == 2) || ((byte)(to->super_Symbol).field_0x28 >> 4 == 2)
          ) && (((local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0)))) {
        uVar17 = pSVar6->st_size;
        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18
        ;
        if (((uVar17 != 0) && (to->symsize_ != 0)) &&
           ((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||
            (to->symsize_ != uVar17)))) {
          p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_;
          if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {
            uVar17 = pSVar6->st_value;
            _adjust_common_sizes = object;
            local_38 = 0;
            local_3c = (__bucket_type)
                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |
                       uVar17 << 0x18);
            local_40 = orig_st_shndx;
            if (((to->super_Symbol).field_0x2a & 7) != 0) {
LAB_001661e5:
                    /* WARNING: Subroutine does not return */
              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");
            }
            _adjust_dyndef = (to->super_Symbol).u1_;
            local_28._M_p = (pointer)0x0;
            local_2c = (_func_int_varargs **)to->value_;
            pSVar20 = this;
            pSVar21 = this;
            local_54._8_4_ = p_Var8;
            local_30 = uVar3;
            __node_gen._M_h =
                 (__hashtable_alloc *)
                 std::__detail::
                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));
            std::
            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
            ::
            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>
                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,
                       pSVar21);
            local_54._8_4_ = (to->super_Symbol).name_;
            __node_gen._M_h =
                 (__hashtable_alloc *)
                 std::__detail::
                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));
            std::
            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
            ::
            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>
                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);
          }
        }
      }
    }
    local_70 = &adjust_common_sizes;
    local_74 = &adjust_dyndef;
    iVar14 = (*object->_vptr_Object[5])(object);
    if (iVar14 == 0) {
      SVar16 = (STT)sym->p_->st_info;
      SVar19 = SVar16;
    }
    else {
      SVar16 = (STT)sym->p_->st_info;
      SVar19 = (uint)(byte)(to->super_Symbol).field_0x28;
    }
    uVar17 = symbol_to_bits((int)SVar16 >> 4,(bool)(object->field_0x2c & 1),st_shndx,is_ordinary);
    uVar3 = to->symsize_;
    bVar12 = should_override(&to->super_Symbol,uVar17,SVar19 & STT_HIPROC,OBJECT,object,local_70,
                             local_74,is_default_version);
    if (bVar12) {
      bVar13 = (to->super_Symbol).field_0x28;
      uVar17 = to->value_;
      override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);
      if (adjust_common_sizes != false) {
        if (to->symsize_ < uVar3) {
          to->symsize_ = uVar3;
        }
        if (to->value_ < uVar17) {
          to->value_ = uVar17;
        }
      }
      if ((adjust_dyndef != false) &&
         ((bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0)))) {
        (to->super_Symbol).field_0x2c =
             (to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02' | 1;
      }
    }
    else {
      pSVar6 = sym->p_;
      if (adjust_common_sizes != false) {
        uVar17 = pSVar6->st_size;
        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18
        ;
        if (uVar3 < uVar17) {
          to->symsize_ = uVar17;
        }
        uVar17 = pSVar6->st_value;
        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18
        ;
        if (to->value_ < uVar17) {
          to->value_ = uVar17;
        }
      }
      if (adjust_dyndef != false) {
        bVar13 = (to->super_Symbol).field_0x2c;
        if (((bVar13 & 1) == 0) || ((bVar13 & 2) != 0)) {
          (to->super_Symbol).field_0x2c =
               (to->super_Symbol).field_0x2c & 0xfd |
               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;
        }
      }
      bVar13 = pSVar6->st_other & 3;
      if ((pSVar6->st_other & 3) != 0) {
        bVar2 = (to->super_Symbol).field_0x29;
        if (((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3))) {
          (to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;
        }
      }
    }
    bVar13 = (to->super_Symbol).field_0x2a;
    if ((bVar13 & 7) == 0) {
      pOVar7 = (to->super_Symbol).u1_.output_segment;
      bVar2 = *(byte *)&pOVar7->output_lists_[3].
                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                        _M_impl._M_end_of_storage;
      if ((((bVar2 & 1) != 0) && ((char)bVar13 < '\0')) &&
         (((to->super_Symbol).field_0x2c & 2) == 0)) {
        *(byte *)&pOVar7->output_lists_[3].
                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                  _M_impl._M_end_of_storage = bVar2 | 2;
      }
    }
    if (adjust_common_sizes != false) {
      if (parameters->options_ == (General_options *)0x0) {
LAB_00165d90:
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
      }
      if ((parameters->options_->warn_common_).value != false) {
        uVar17 = sym->p_->st_size;
        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18
        ;
        if (uVar17 < uVar3) {
          pcVar18 = "common of \'%s\' overriding smaller common";
        }
        else if (uVar3 < uVar17) {
          pcVar18 = "common of \'%s\' overidden by larger common";
        }
        else {
          pcVar18 = "multiple common of \'%s\'";
        }
        pcVar18 = (char *)gettext(pcVar18);
        report_resolve_problem(false,pcVar18,&to->super_Symbol,OBJECT,object);
      }
    }
  }
  return;
}



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

void __regparm2
FUN_00165a70(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,
            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,
            undefined **param_10,uint param_11)

{
  byte bVar1;
  int *piVar2;
  code *pcVar3;
  undefined4 *puVar4;
  char cVar5;
  byte bVar6;
  char *pcVar7;
  int iVar8;
  undefined4 uVar9;
  undefined **ppuVar10;
  undefined4 uVar11;
  uint uVar12;
  undefined ***pppuVar13;
  bool bVar14;
  undefined **ppuStack_84;
  undefined **ppuStack_80;
  undefined1 auStack_7c [4];
  undefined4 *local_78;
  undefined4 **local_74;
  int **local_70;
  undefined1 *local_6c;
  uint local_68;
  char **local_64;
  undefined **local_60;
  undefined **local_5c;
  uint local_58;
  undefined1 local_54 [8];
  char *local_4c;
  undefined4 local_48;
  int *local_44;
  int local_40;
  uint local_3c;
  undefined4 local_38;
  undefined4 *local_34;
  undefined1 *local_30;
  undefined4 local_2c;
  undefined4 local_28;
  
  local_5c = &__DT_PLTGOT;
  local_58 = param_7;
  local_68 = param_11;
  if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {
    ppuStack_84 = (undefined **)0x237534;
    ppuStack_80 = (undefined **)param_2;
    local_5c = &__DT_PLTGOT;
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0("../../gold/symtab.h",0xaa);
  }
  local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);
  local_6c = (undefined1 *)param_4[3];
  ppuVar10 = &__DT_PLTGOT;
  if (param_9 == (int *)param_4[2]) {
    if ((byte)local_64 == '\0') {
      local_5c = &__DT_PLTGOT;
      cVar5 = FUN_00122bf0(local_6c);
      ppuVar10 = local_5c;
      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;
    }
    else if ((local_6c != (undefined1 *)0x0) &&
            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,
             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;
  }
  else {
LAB_00165abe:
    local_5c = ppuVar10;
    bVar14 = (char)local_58 == '\0';
    ppuVar10 = local_5c;
    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&
       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {
LAB_00165d65:
      uVar12 = *(uint *)(*param_5 + 4);
      ppuVar10 = local_5c;
      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==
          param_4[0xc]) {
        return;
      }
    }
  }
  local_5c = ppuVar10;
  pppuVar13 = (undefined ***)auStack_7c;
  local_60 = local_5c + 0xde;
  piVar2 = *(int **)(*local_60 + 0xc);
  if (piVar2 == (int *)0x0) {
    ppuStack_84 = local_5c + -0x32ad3;
    ppuStack_80 = (undefined **)piVar2;
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(local_5c + -0x385a4,0x69);
  }
  if ((*(char *)(piVar2[1] + 0xd) != '\0') &&
     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')
     ) {
    return;
  }
  if ((*(byte *)(param_9 + 0xb) & 1) == 0) {
    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);
    if (((char)pcVar7 == '\x05') &&
       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))
    {
      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {
        uVar9 = *(undefined4 *)(param_4[2] + 4);
        FUN_00123e20(&local_34,param_4);
        puVar4 = local_34;
        uVar11 = gettext(local_5c + -0x32aad);
                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */
        FUN_0005ad30(uVar11,puVar4,uVar9);
        if (local_34 == &local_2c) {
          return;
        }
        FUN_001807a0(local_34);
        return;
      }
      goto LAB_001661e5;
    }
    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;
    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);
  }
  else {
    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {
      return;
    }
    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;
    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);
  }
  if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {
    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;
  }
  if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&
     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {
    iVar8 = *(int *)(*local_60 + 8);
    pppuVar13 = (undefined ***)auStack_7c;
    if (iVar8 == 0) goto LAB_00165d90;
    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {
      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||
           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||
          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||
         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {
        ppuStack_84 = param_10;
        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);
        return;
      }
      local_58 = param_4[0xd];
      uVar12 = param_4[0xc];
      ppuStack_84 = param_10;
      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);
      if ((uint)param_4[0xd] < local_58) {
        param_4[0xd] = local_58;
      }
      if (uVar12 <= (uint)param_4[0xc]) {
        return;
      }
      param_4[0xc] = uVar12;
      return;
    }
  }
  else {
    iVar8 = *(int *)(*local_60 + 8);
    if (iVar8 == 0) goto LAB_00165d90;
  }
  if (*(char *)(iVar8 + 0xe0d) == '\0') {
    local_74 = &local_34;
    local_70 = &local_44;
    pppuVar13 = (undefined ***)auStack_7c;
  }
  else {
    iVar8 = *param_5;
    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {
      local_74 = &local_34;
      local_70 = &local_44;
      pppuVar13 = (undefined ***)auStack_7c;
      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;
    }
    local_74 = &local_34;
    local_70 = &local_44;
    pppuVar13 = (undefined ***)auStack_7c;
    if ((((byte)local_64 & param_8 != 0) != 0) &&
       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {
      uVar12 = *(uint *)(iVar8 + 8);
      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
      pppuVar13 = (undefined ***)auStack_7c;
      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {
        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);
        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||
           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {
          pcVar7 = (char *)*param_4;
          local_74 = &local_34;
          local_70 = &local_44;
          pppuVar13 = (undefined ***)auStack_7c;
          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {
            uVar12 = *(uint *)(iVar8 + 4);
            local_44 = param_9;
            local_38 = 0;
            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |
                       uVar12 << 0x18;
            local_40 = param_8;
            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {
LAB_001661e5:
              ppuStack_84 = local_5c + -0x32ab8;
              ppuStack_80 = (undefined **)pcVar7;
                    /* WARNING: Subroutine does not return */
              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);
            }
            local_34 = (undefined4 *)param_4[2];
            local_28 = 0;
            local_30 = local_6c;
            local_2c = param_4[0xc];
            ppuStack_80 = param_3;
            ppuStack_84 = param_3;
            local_64 = &local_4c;
            local_4c = pcVar7;
            local_48 = FUN_001646d0(param_3 + 0x47,local_64);
            local_6c = local_54;
            local_78 = &local_48;
            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);
            local_4c = (char *)*param_4;
            local_48 = FUN_001646d0(param_3 + 0x47,local_64);
            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);
            pppuVar13 = &ppuStack_84;
          }
        }
      }
    }
  }
LAB_00165ba8:
  iVar8 = *param_9;
  *(int **)((int)pppuVar13 + -0x10) = param_9;
  pcVar3 = *(code **)(iVar8 + 0x14);
  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;
  iVar8 = (*pcVar3)();
  if (iVar8 == 0) {
    bVar6 = *(byte *)(*param_5 + 0xc);
  }
  else {
    bVar6 = *(byte *)(param_4 + 10);
  }
  local_64 = (char **)(local_58 & 0xff);
  *(char ***)((int)pppuVar13 + -0x10) = local_64;
  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;
  uVar9 = FUN_001630f0();
  local_58 = param_4[0xd];
  *(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;
  *(undefined4 ***)((int)pppuVar13 + -8) = local_74;
  *(int ***)((int)pppuVar13 + -0xc) = local_70;
  *(int **)((int)pppuVar13 + -0x10) = param_9;
  *(undefined4 *)((int)pppuVar13 + -0x14) = 0;
  *(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;
  *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;
  *(undefined4 **)((int)pppuVar13 + -0x20) = param_4;
  *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;
  cVar5 = FUN_00163520();
  if (cVar5 == '\0') {
    iVar8 = *param_5;
    if ((char)local_44 != '\0') {
      uVar12 = *(uint *)(iVar8 + 8);
      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
      if (local_58 < uVar12) {
        param_4[0xd] = uVar12;
      }
      uVar12 = *(uint *)(iVar8 + 4);
      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
      if ((uint)param_4[0xc] < uVar12) {
        param_4[0xc] = uVar12;
      }
    }
    if ((char)local_34 != '\0') {
      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {
        *(byte *)(param_4 + 0xb) =
             *(byte *)(param_4 + 0xb) & 0xfd |
             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;
      }
    }
    bVar6 = *(byte *)(iVar8 + 0xd) & 3;
    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {
      bVar1 = *(byte *)((int)param_4 + 0x29);
      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {
        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;
      }
    }
  }
  else {
    bVar6 = *(byte *)(param_4 + 10);
    uVar12 = param_4[0xc];
    *(undefined ***)((int)pppuVar13 + -8) = param_10;
    *(int **)((int)pppuVar13 + -0xc) = param_9;
    *(char ***)((int)pppuVar13 + -0x10) = local_64;
    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;
    *(int **)((int)pppuVar13 + -0x18) = param_5;
    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;
    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;
    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);
    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;
    FUN_001648f0();
    if ((char)local_44 != '\0') {
      if ((uint)param_4[0xd] < local_58) {
        param_4[0xd] = local_58;
      }
      if ((uint)param_4[0xc] < uVar12) {
        param_4[0xc] = uVar12;
      }
    }
    if (((char)local_34 != '\0') &&
       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {
      *(byte *)(param_4 + 0xb) =
           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;
    }
  }
  if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {
    bVar6 = *(byte *)(param_4[2] + 0x2c);
    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&
       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {
      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;
    }
  }
  if ((char)local_44 != '\0') {
    iVar8 = *(int *)(*local_60 + 8);
    if (iVar8 == 0) {
LAB_00165d90:
      *(int *)((int)pppuVar13 + -4) = iVar8;
      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;
      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;
      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;
                    /* WARNING: Subroutine does not return */
      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;
      FUN_0005f0b0();
    }
    if (*(char *)(iVar8 + 0x43e5) != '\0') {
      uVar12 = *(uint *)(*param_5 + 8);
      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
      if (uVar12 < local_58) {
        ppuVar10 = local_5c + -0x32a9f;
      }
      else if (local_58 < uVar12) {
        ppuVar10 = local_5c + -0x32a94;
      }
      else {
        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);
      }
      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;
      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;
      uVar9 = gettext();
      *(int **)((int)pppuVar13 + -0x10) = param_9;
      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;
      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;
      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;
      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;
      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;
      FUN_00163350();
    }
  }
  return;
}


CALL 0x0004fb76
ADD EAX,0x19c58b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x6c
MOV ESI,dword ptr [EBP + 0xc]
MOV EDI,dword ptr [EBP + 0x20]
MOV dword ptr [EBP + -0x58],EAX
MOV EAX,dword ptr [EBP + 0x18]
MOV dword ptr [EBP + -0x54],EAX
MOV EAX,dword ptr [EBP + 0x28]
MOV dword ptr [EBP + -0x64],EAX
TEST byte ptr [ESI + 0x2a],0x7
JNZ 0x001661c9
MOVZX EAX,byte ptr [ESI + 0x2b]
SHR AL,0x5
AND EAX,0x1
MOV byte ptr [EBP + -0x60],AL
MOV EAX,dword ptr [ESI + 0xc]
MOV dword ptr [EBP + -0x68],EAX
CMP EDI,dword ptr [ESI + 0x8]
JZ 0x001660f0
CMP dword ptr [EBP + 0x14],0xfff1
SETNZ AL
OR AL,byte ptr [EBP + -0x54]
JNZ 0x00165ad7
CMP byte ptr [EBP + -0x60],0x0
JZ 0x00165d58
MOV EAX,dword ptr [EBP + -0x58]
LEA EAX,[EAX + 0x378]
MOV dword ptr [EBP + -0x5c],EAX
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x001661b0
MOV EDX,dword ptr [EAX + 0x4]
CMP byte ptr [EDX + 0xd],0x0
JZ 0x00165b18
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
PUSH dword ptr [EBP + 0x24]
PUSH EDI
PUSH dword ptr [EBP + 0x10]
PUSH ESI
PUSH EAX
CALL dword ptr [EDX + 0xa4]
ADD ESP,0x20
TEST AL,AL
JNZ 0x00165d01
TEST byte ptr [EDI + 0x2c],0x1
JNZ 0x00165d10
MOV EAX,dword ptr [EBP + 0x10]
MOV EAX,dword ptr [EAX]
MOVZX EAX,byte ptr [EAX + 0xc]
AND EAX,0xf
CMP AL,0x5
JZ 0x00166078
SUB ESP,0xc
OR byte ptr [ESI + 0x2a],0x80
MOV EAX,dword ptr [EDI]
PUSH EDI
CALL dword ptr [EAX + 0x14]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00165d3e
TEST byte ptr [ESI + 0x2a],0x7
JNZ 0x00165d80
MOV EAX,dword ptr [ESI + 0x8]
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x14]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00165d80
MOV EAX,dword ptr [EBP + -0x5c]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x00165d90
MOV EDX,dword ptr [EAX + 0x593c]
CMP byte ptr [EDX + 0x61],0x0
JNZ 0x00165f28
CMP byte ptr [EAX + 0xe0d],0x0
JNZ 0x00165db0
LEA EAX,[EBP + -0x30]
MOV dword ptr [EBP + -0x70],EAX
LEA EAX,[EBP + -0x40]
MOV dword ptr [EBP + -0x6c],EAX
SUB ESP,0xc
MOV EAX,dword ptr [EDI]
PUSH EDI
CALL dword ptr [EAX + 0x14]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00166060
MOV EAX,dword ptr [EBP + 0x10]
MOVZX EBX,byte ptr [ESI + 0x28]
MOV EAX,dword ptr [EAX]
AND EBX,0xf
MOVZX EAX,byte ptr [EAX + 0xc]
MOVZX ECX,byte ptr [EBP + -0x54]
SUB ESP,0xc
MOVZX EDX,byte ptr [EDI + 0x2c]
SAR EAX,0x4
PUSH ECX
AND EDX,0x1
MOV dword ptr [EBP + -0x60],ECX
MOV ECX,dword ptr [EBP + 0x14]
CALL 0x001630f0
MOVZX EDX,byte ptr [EBP + -0x64]
ADD ESP,0x10
MOV ECX,dword ptr [ESI + 0x34]
PUSH EDX
PUSH dword ptr [EBP + -0x70]
PUSH dword ptr [EBP + -0x6c]
PUSH EDI
PUSH 0x0
PUSH EBX
PUSH EAX
PUSH ESI
MOV dword ptr [EBP + -0x54],ECX
CALL 0x00163520
ADD ESP,0x20
TEST AL,AL
JNZ 0x00165fe8
MOV EAX,dword ptr [EBP + 0x10]
MOVZX EDX,byte ptr [EBP + -0x40]
MOV EAX,dword ptr [EAX]
TEST DL,DL
JZ 0x00165c3a
MOV ECX,dword ptr [EAX + 0x8]
BSWAP ECX
CMP dword ptr [EBP + -0x54],ECX
JNC 0x00165c2d
MOV dword ptr [ESI + 0x34],ECX
MOV ECX,dword ptr [EAX + 0x4]
BSWAP ECX
CMP dword ptr [ESI + 0x30],ECX
JNC 0x00165c3a
MOV dword ptr [ESI + 0x30],ECX
CMP byte ptr [EBP + -0x30],0x0
JZ 0x00165c6c
MOVZX ECX,byte ptr [EAX + 0xc]
MOVZX EBX,byte ptr [ESI + 0x2c]
SAR ECX,0x4
TEST BL,0x1
JZ 0x00165c55
AND EBX,0x2
JZ 0x00165c6c
CMP ECX,0x2
MOVZX ECX,byte ptr [ESI + 0x2c]
SETZ BL
ADD EBX,EBX
AND ECX,0xfffffffd
OR ECX,EBX
OR ECX,0x1
MOV byte ptr [ESI + 0x2c],CL
MOVZX EAX,byte ptr [EAX + 0xd]
AND EAX,0x3
JZ 0x00165c90
MOVZX ECX,byte ptr [ESI + 0x29]
MOV EBX,ECX
AND EBX,0x3
JZ 0x00165fb0
CMP AL,BL
JC 0x00165fb0
LEA ESI,[ESI]
MOVZX EAX,byte ptr [ESI + 0x2a]
TEST AL,0x7
JNZ 0x00165ca8
MOV EBX,dword ptr [ESI + 0x8]
MOVZX ECX,byte ptr [EBX + 0x2c]
TEST CL,0x1
JNZ 0x00165f08
TEST DL,DL
JZ 0x00165d01
MOV EAX,dword ptr [EBP + -0x5c]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x00165d90
CMP byte ptr [EAX + 0x43e5],0x0
JZ 0x00165d01
MOV EAX,dword ptr [EBP + 0x10]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
BSWAP EAX
CMP dword ptr [EBP + -0x54],EAX
JA 0x00166170
JC 0x00166120
MOV EBX,dword ptr [EBP + -0x58]
SUB ESP,0xc
LEA EAX,[EBX + 0xfff355da]
PUSH EAX
CALL 0x000263b0
MOV dword ptr [ESP],EDI
PUSH 0x0
PUSH ESI
PUSH EAX
PUSH 0x0
CALL 0x00163350
ADD ESP,0x20
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + 0x14]
TEST EAX,EAX
JNZ 0x00165d26
MOVZX EAX,byte ptr [ESI + 0x29]
AND EAX,0x3
SUB EAX,0x1
CMP EAX,0x1
JBE 0x00165d01
SUB ESP,0xc
OR byte ptr [ESI + 0x2b],0x1
MOV EAX,dword ptr [EDI]
PUSH EDI
CALL dword ptr [EAX + 0x14]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00165b4e
TEST byte ptr [EDI + 0x2c],0x1
JNZ 0x00165b4e
OR byte ptr [ESI + 0x2b],0x40
JMP 0x00165b4e
CMP dword ptr [EBP + -0x68],0xfff1
JNZ 0x00165ad7
MOV EAX,dword ptr [EBP + 0x10]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x4]
BSWAP EAX
CMP EAX,dword ptr [ESI + 0x30]
JNZ 0x00165ad7
JMP 0x00165d01
MOV EAX,dword ptr [EBP + -0x5c]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JNZ 0x00165b8f
MOV EBX,dword ptr [EBP + -0x58]
PUSH EAX
LEA EAX,[EBX + 0xfff35518]
PUSH EAX
LEA EAX,[EBX + 0xfff1e970]
PUSH 0x5c
PUSH EAX
CALL 0x0005f0b0
MOV EAX,dword ptr [EBP + 0x10]
MOV EDX,dword ptr [EAX]
MOVZX EAX,byte ptr [EDX + 0xc]
MOV ECX,EAX
SAR EAX,0x4
CMP EAX,0x2
JZ 0x00165dde
MOVZX EAX,byte ptr [ESI + 0x28]
LEA EBX,[EBP + -0x30]
MOV dword ptr [EBP + -0x70],EBX
LEA EBX,[EBP + -0x40]
SHR AL,0x4
MOV dword ptr [EBP + -0x6c],EBX
CMP AL,0x2
JNZ 0x00165ba8
MOV EAX,dword ptr [EBP + 0x1c]
TEST EAX,EAX
SETNZ AL
TEST byte ptr [EBP + -0x60],AL
LEA EAX,[EBP + -0x30]
MOV dword ptr [EBP + -0x70],EAX
LEA EAX,[EBP + -0x40]
MOV dword ptr [EBP + -0x6c],EAX
JZ 0x00165ba8
MOV EAX,dword ptr [EBP + -0x68]
TEST EAX,EAX
JZ 0x00165ba8
MOV EAX,dword ptr [EDX + 0x8]
BSWAP EAX
TEST EAX,EAX
JZ 0x00165ba8
MOV EBX,dword ptr [ESI + 0x34]
TEST EBX,EBX
JZ 0x00165ba8
AND ECX,0xf
MOV byte ptr [EBP + -0x60],CL
MOVZX ECX,byte ptr [ESI + 0x28]
AND ECX,0xf
CMP byte ptr [EBP + -0x60],CL
JNZ 0x00165e38
CMP EBX,EAX
JZ 0x00165ba8
MOV EAX,dword ptr [ESI]
LEA EBX,[EBP + -0x30]
MOV dword ptr [EBP + -0x70],EBX
LEA EBX,[EBP + -0x40]
CMP byte ptr [EAX],0x5f
MOV dword ptr [EBP + -0x6c],EBX
JNZ 0x00165ba8
CMP byte ptr [EAX + 0x1],0x5a
JNZ 0x00165ba8
MOV EDX,dword ptr [EDX + 0x4]
MOV EBX,dword ptr [EBP + 0x1c]
MOV dword ptr [EBP + -0x40],EDI
MOV dword ptr [EBP + -0x34],0x0
BSWAP EDX
MOV dword ptr [EBP + -0x3c],EBX
MOV dword ptr [EBP + -0x38],EDX
TEST byte ptr [ESI + 0x2a],0x7
JNZ 0x001661e5
MOV EBX,dword ptr [EBP + -0x68]
MOV EDX,dword ptr [ESI + 0x8]
MOV dword ptr [EBP + -0x48],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x24],0x0
MOV dword ptr [EBP + -0x2c],EBX
MOV EBX,dword ptr [ESI + 0x30]
MOV dword ptr [EBP + -0x30],EDX
MOV dword ptr [EBP + -0x28],EBX
LEA EBX,[EAX + 0x11c]
PUSH EAX
PUSH EAX
LEA EAX,[EBP + -0x48]
PUSH EAX
PUSH EBX
MOV dword ptr [EBP + -0x60],EAX
CALL 0x001646d0
POP EDX
LEA ECX,[EBP + -0x50]
POP EDX
LEA EDX,[EBP + -0x44]
PUSH 0x1
PUSH 0x0
PUSH EDX
PUSH dword ptr [EBP + -0x6c]
PUSH EAX
PUSH ECX
MOV dword ptr [EBP + -0x74],EDX
MOV dword ptr [EBP + -0x68],ECX
MOV dword ptr [EBP + -0x44],EAX
CALL 0x001650c0
MOV EAX,dword ptr [ESI]
ADD ESP,0x14
PUSH dword ptr [EBP + -0x60]
PUSH EBX
MOV dword ptr [EBP + -0x48],EAX
CALL 0x001646d0
POP ECX
MOV EDX,dword ptr [EBP + -0x74]
MOV ECX,dword ptr [EBP + -0x68]
POP EBX
PUSH 0x1
PUSH 0x0
PUSH EDX
PUSH dword ptr [EBP + -0x70]
PUSH EAX
PUSH ECX
MOV dword ptr [EBP + -0x44],EAX
CALL 0x001650c0
ADD ESP,0x1c
JMP 0x00165ba8
TEST AL,AL
JNS 0x00165ca8
TEST byte ptr [ESI + 0x2c],0x2
JNZ 0x00165ca8
OR ECX,0x2
MOV byte ptr [EBX + 0x2c],CL
JMP 0x00165ca8
TEST byte ptr [ESI + 0x2a],0x7
JNZ 0x00165fc0
TEST byte ptr [ESI + 0x2b],0x20
JNZ 0x00165fc0
SUB ESP,0xc
PUSH dword ptr [ESI + 0xc]
MOV EBX,dword ptr [EBP + -0x58]
CALL 0x00122bf0
ADD ESP,0x10
CMP AL,0x1
JNZ 0x00165fc0
CMP byte ptr [EBP + -0x54],0x0
JNZ 0x00165fc0
SUB ESP,0xc
PUSH dword ptr [EBP + 0x14]
MOV EBX,dword ptr [EBP + -0x58]
CALL 0x00122bf0
ADD ESP,0x10
TEST AL,AL
JZ 0x00165fc0
SUB ESP,0x4
MOV EAX,dword ptr [ESI + 0x34]
MOV EBX,dword ptr [ESI + 0x30]
PUSH dword ptr [EBP + 0x24]
PUSH EDI
PUSH 0x0
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EBP + 0x10]
PUSH ESI
PUSH dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x54],EAX
CALL 0x001648f0
ADD ESP,0x20
MOV EAX,dword ptr [EBP + -0x54]
CMP EAX,dword ptr [ESI + 0x34]
JBE 0x00165f9b
MOV dword ptr [ESI + 0x34],EAX
CMP EBX,dword ptr [ESI + 0x30]
JBE 0x00165d01
MOV dword ptr [ESI + 0x30],EBX
JMP 0x00165d01
AND ECX,0xfffffffc
OR EAX,ECX
MOV byte ptr [ESI + 0x29],AL
JMP 0x00165c90
MOVZX EAX,byte ptr [EBP + -0x54]
SUB ESP,0x4
PUSH dword ptr [EBP + 0x24]
PUSH EDI
PUSH EAX
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EBP + 0x10]
PUSH ESI
PUSH dword ptr [EBP + 0x8]
CALL 0x001648f0
ADD ESP,0x20
JMP 0x00165d01
SUB ESP,0x4
MOVZX EAX,byte ptr [ESI + 0x28]
MOV EBX,dword ptr [ESI + 0x30]
PUSH dword ptr [EBP + 0x24]
PUSH EDI
PUSH dword ptr [EBP + -0x60]
SHR AL,0x4
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EBP + 0x10]
PUSH ESI
PUSH dword ptr [EBP + 0x8]
MOV byte ptr [EBP + -0x64],AL
CALL 0x001648f0
MOVZX EDX,byte ptr [EBP + -0x40]
ADD ESP,0x20
TEST DL,DL
JZ 0x0016602d
MOV EAX,dword ptr [EBP + -0x54]
CMP EAX,dword ptr [ESI + 0x34]
JBE 0x00166024
MOV dword ptr [ESI + 0x34],EAX
CMP EBX,dword ptr [ESI + 0x30]
JA 0x00166148
CMP byte ptr [EBP + -0x30],0x0
JZ 0x00165c90
MOVZX EAX,byte ptr [ESI + 0x2c]
TEST AL,0x1
JNZ 0x00166138
CMP byte ptr [EBP + -0x64],0x2
MOVZX EAX,byte ptr [ESI + 0x2c]
SETZ CL
ADD ECX,ECX
AND EAX,0xfffffffd
OR EAX,ECX
OR EAX,0x1
MOV byte ptr [ESI + 0x2c],AL
JMP 0x00165c90
MOV EAX,dword ptr [EBP + 0x10]
MOV EAX,dword ptr [EAX]
MOVZX EAX,byte ptr [EAX + 0xc]
MOV EBX,EAX
AND EBX,0xf
JMP 0x00165bcc
CMP byte ptr [EBP + -0x54],0x0
JZ 0x00166150
TEST byte ptr [ESI + 0x2a],0x7
JNZ 0x001661e5
MOV EAX,dword ptr [ESI + 0x8]
SUB ESP,0x8
MOV EBX,dword ptr [EBP + -0x58]
MOV EDI,dword ptr [EAX + 0x4]
LEA EAX,[EBP + -0x30]
PUSH ESI
PUSH EAX
CALL 0x00123e20
MOV EBX,dword ptr [EBP + -0x58]
MOV ESI,dword ptr [EBP + -0x30]
LEA EAX,[EBX + 0xfff3554c]
PUSH EAX
CALL 0x000263b0
ADD ESP,0xc
PUSH EDI
MOV EDI,dword ptr [EBP + -0x58]
PUSH ESI
PUSH EAX
MOV EBX,EDI
CALL 0x0005ad30
MOV EAX,dword ptr [EBP + -0x30]
LEA EDX,[EBP + -0x28]
ADD ESP,0x10
CMP EAX,EDX
JZ 0x00165d01
SUB ESP,0xc
PUSH EAX
CALL 0x001807a0
ADD ESP,0x10
JMP 0x00165d01
CMP byte ptr [EBP + -0x60],0x0
JZ 0x00166188
TEST EAX,EAX
JZ 0x00165ad7
CMP byte ptr [EBP + -0x54],0x0
JZ 0x00165ad7
MOV EAX,dword ptr [EBP + -0x68]
CMP dword ptr [EBP + 0x14],EAX
JNZ 0x00165ad7
JMP 0x00165d65
MOV EBX,dword ptr [EBP + -0x58]
SUB ESP,0xc
LEA EAX,[EBX + 0xfff355b0]
JMP 0x00165cea
TEST AL,0x2
JZ 0x00165c90
JMP 0x00166043
MOV dword ptr [ESI + 0x30],EBX
JMP 0x0016602d
SUB ESP,0xc
PUSH dword ptr [EBP + 0x14]
MOV EBX,dword ptr [EBP + -0x58]
CALL 0x00122bf0
ADD ESP,0x10
TEST AL,AL
JZ 0x00166082
JMP 0x00165b36
MOV EBX,dword ptr [EBP + -0x58]
SUB ESP,0xc
LEA EAX,[EBX + 0xfff35584]
JMP 0x00165cea
SUB ESP,0xc
PUSH dword ptr [EBP + -0x68]
MOV EBX,dword ptr [EBP + -0x58]
CALL 0x00122bf0
ADD ESP,0x10
CMP AL,0x1
JZ 0x00165abe
CMP byte ptr [EBP + -0x54],0x0
JNZ 0x00165ad7
JMP 0x00165abe
MOV EBX,dword ptr [EBP + -0x58]
PUSH EAX
LEA EAX,[EBX + 0xfff354b4]
PUSH EAX
LEA EAX,[EBX + 0xfff1e970]
PUSH 0x69
PUSH EAX
CALL 0x0005f0b0
MOV EBX,dword ptr [EBP + -0x58]
PUSH EDX
LEA EAX,[EBX + 0xfff35534]
PUSH EAX
LEA EAX,[EBX + 0xfff1e98d]
PUSH 0xaa
PUSH EAX
CALL 0x0005f0b0
MOV EBX,dword ptr [EBP + -0x58]
PUSH EAX
LEA EAX,[EBX + 0xfff35520]
PUSH EAX
LEA EAX,[EBX + 0xfff1e98d]
PUSH 0xa1
PUSH EAX
CALL 0x0005f0b0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid __regparm2\nFUN_00165a70(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,\n            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,\n            undefined **param_10,uint param_11)\n\n{\n  byte bVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  byte bVar6;\n  char *pcVar7;\n  int iVar8;\n  undefined4 uVar9;\n  undefined **ppuVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  undefined ***pppuVar13;\n  bool bVar14;\n  undefined **ppuStack_84;\n  undefined **ppuStack_80;\n  undefined1 auStack_7c [4];\n  undefined4 *local_78;\n  undefined4 **local_74;\n  int **local_70;\n  undefined1 *local_6c;\n  uint local_68;\n  char **local_64;\n  undefined **local_60;\n  undefined **local_5c;\n  uint local_58;\n  undefined1 local_54 [8];\n  char *local_4c;\n  undefined4 local_48;\n  int *local_44;\n  int local_40;\n  uint local_3c;\n  undefined4 local_38;\n  undefined4 *local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_5c = &__DT_PLTGOT;\n  local_58 = param_7;\n  local_68 = param_11;\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }\n  local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);\n  local_6c = (undefined1 *)param_4[3];\n  ppuVar10 = &__DT_PLTGOT;\n  if (param_9 == (int *)param_4[2]) {\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }\n  local_5c = ppuVar10;\n  pppuVar13 = (undefined ***)auStack_7c;\n  local_60 = local_5c + 0xde;\n  piVar2 = *(int **)(*local_60 + 0xc);\n  if (piVar2 == (int *)0x0) {\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }\n  if ((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     ) {\n    return;\n  }\n  if ((*(byte *)(param_9 + 0xb) & 1) == 0) {\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }\n  else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }\n  if (*(char *)(iVar8 + 0xe0d) == '\0') {\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }\n  else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }\nLAB_00165ba8:\n  iVar8 = *param_9;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  pcVar3 = *(code **)(iVar8 + 0x14);\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;\n  iVar8 = (*pcVar3)();\n  if (iVar8 == 0) {\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }\n  local_64 = (char **)(local_58 & 0xff);\n  *(char ***)((int)pppuVar13 + -0x10) = local_64;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;\n  uVar9 = FUN_001630f0();\n  local_58 = param_4[0xd];\n  *(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;\n  *(undefined4 ***)((int)pppuVar13 + -8) = local_74;\n  *(int ***)((int)pppuVar13 + -0xc) = local_70;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n  *(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;\n  *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n  *(undefined4 **)((int)pppuVar13 + -0x20) = param_4;\n  *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;\n  cVar5 = FUN_00163520();\n  if (cVar5 == '\0') {\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }\n  if ((char)local_44 != '\0') {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void __regparm2\nFUN_00165a70(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,\n            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,\n            undefined **param_10,uint param_11)\n\n{\n  byte bVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  byte bVar6;\n  char *pcVar7;\n  int iVar8;\n  undefined4 uVar9;\n  undefined **ppuVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  undefined ***pppuVar13;\n  bool bVar14;\n  undefined **ppuStack_84;\n  undefined **ppuStack_80;\n  undefined1 auStack_7c [4];\n  undefined4 *local_78;\n  undefined4 **local_74;\n  int **local_70;\n  undefined1 *local_6c;\n  uint local_68;\n  char **local_64;\n  undefined **local_60;\n  undefined **local_5c;\n  uint local_58;\n  undefined1 local_54 [8];\n  char *local_4c;\n  undefined4 local_48;\n  int *local_44;\n  int local_40;\n  uint local_3c;\n  undefined4 local_38;\n  undefined4 *local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_5c = &__DT_PLTGOT;\n  local_58 = param_7;\n  local_68 = param_11;\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }\n  local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);\n  local_6c = (undefined1 *)param_4[3];\n  ppuVar10 = &__DT_PLTGOT;\n  if (param_9 == (int *)param_4[2]) {\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }\n  local_5c = ppuVar10;\n  pppuVar13 = (undefined ***)auStack_7c;\n  local_60 = local_5c + 0xde;\n  piVar2 = *(int **)(*local_60 + 0xc);\n  if (piVar2 == (int *)0x0) {\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }\n  if ((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     ) {\n    return;\n  }\n  if ((*(byte *)(param_9 + 0xb) & 1) == 0) {\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }\n  else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }\n  if (*(char *)(iVar8 + 0xe0d) == '\0') {\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }\n  else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }\nLAB_00165ba8:\n  iVar8 = *param_9;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  pcVar3 = *(code **)(iVar8 + 0x14);\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;\n  iVar8 = (*pcVar3)();\n  if (iVar8 == 0) {\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }\n  local_64 = (char **)(local_58 & 0xff);\n  *(char ***)((int)pppuVar13 + -0x10) = local_64;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;\n  uVar9 = FUN_001630f0();\n  local_58 = param_4[0xd];\n  *(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;\n  *(undefined4 ***)((int)pppuVar13 + -8) = local_74;\n  *(int ***)((int)pppuVar13 + -0xc) = local_70;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n  *(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;\n  *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n  *(undefined4 **)((int)pppuVar13 + -0x20) = param_4;\n  *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;\n  cVar5 = FUN_00163520();\n  if (cVar5 == '\0') {\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }\n  if ((char)local_44 != '\0') {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }\n  return;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_00165a70(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,\n            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,\n            undefined **param_10,uint param_11)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,\n            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,\n            undefined **param_10,uint param_11)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined **param_3" type_identifier (pointer_declarator "**param_3" * (pointer_declarator "*param_3" * identifier))) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined1 *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "int *param_9" primitive_type (pointer_declarator "*param_9" * identifier)) , (parameter_declaration "undefined **param_10" type_identifier (pointer_declarator "**param_10" * (pointer_declarator "*param_10" * identifier))) , (parameter_declaration "uint param_11" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  byte bVar6;\n  char *pcVar7;\n  int iVar8;\n  undefined4 uVar9;\n  undefined **ppuVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  undefined ***pppuVar13;\n  bool bVar14;\n  undefined **ppuStack_84;\n  undefined **ppuStack_80;\n  undefined1 auStack_7c [4];\n  undefined4 *local_78;\n  undefined4 **local_74;\n  int **local_70;\n  undefined1 *local_6c;\n  uint local_68;\n  char **local_64;\n  undefined **local_60;\n  undefined **local_5c;\n  uint local_58;\n  undefined1 local_54 [8];\n  char *local_4c;\n  undefined4 local_48;\n  int *local_44;\n  int local_40;\n  uint local_3c;\n  undefined4 local_38;\n  undefined4 *local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_5c = &__DT_PLTGOT;\n  local_58 = param_7;\n  local_68 = param_11;\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }\n  local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);\n  local_6c = (undefined1 *)param_4[3];\n  ppuVar10 = &__DT_PLTGOT;\n  if (param_9 == (int *)param_4[2]) {\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }\n  local_5c = ppuVar10;\n  pppuVar13 = (undefined ***)auStack_7c;\n  local_60 = local_5c + 0xde;\n  piVar2 = *(int **)(*local_60 + 0xc);\n  if (piVar2 == (int *)0x0) {\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }\n  if ((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     ) {\n    return;\n  }\n  if ((*(byte *)(param_9 + 0xb) & 1) == 0) {\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }\n  else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }\n  if (*(char *)(iVar8 + 0xe0d) == '\0') {\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }\n  else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }\nLAB_00165ba8:\n  iVar8 = *param_9;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  pcVar3 = *(code **)(iVar8 + 0x14);\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;\n  iVar8 = (*pcVar3)();\n  if (iVar8 == 0) {\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }\n  local_64 = (char **)(local_58 & 0xff);\n  *(char ***)((int)pppuVar13 + -0x10) = local_64;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;\n  uVar9 = FUN_001630f0();\n  local_58 = param_4[0xd];\n  *(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;\n  *(undefined4 ***)((int)pppuVar13 + -8) = local_74;\n  *(int ***)((int)pppuVar13 + -0xc) = local_70;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n  *(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;\n  *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n  *(undefined4 **)((int)pppuVar13 + -0x20) = param_4;\n  *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;\n  cVar5 = FUN_00163520();\n  if (cVar5 == '\0') {\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }\n  if ((char)local_44 != '\0') {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined **ppuVar10;" type_identifier (pointer_declarator "**ppuVar10" * (pointer_declarator "*ppuVar10" * identifier)) ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined ***pppuVar13;" type_identifier (pointer_declarator "***pppuVar13" * (pointer_declarator "**pppuVar13" * (pointer_declarator "*pppuVar13" * identifier))) ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "undefined **ppuStack_84;" type_identifier (pointer_declarator "**ppuStack_84" * (pointer_declarator "*ppuStack_84" * identifier)) ;) (declaration "undefined **ppuStack_80;" type_identifier (pointer_declarator "**ppuStack_80" * (pointer_declarator "*ppuStack_80" * identifier)) ;) (declaration "undefined1 auStack_7c [4];" type_identifier (array_declarator "auStack_7c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "undefined4 **local_74;" type_identifier (pointer_declarator "**local_74" * (pointer_declarator "*local_74" * identifier)) ;) (declaration "int **local_70;" primitive_type (pointer_declarator "**local_70" * (pointer_declarator "*local_70" * identifier)) ;) (declaration "undefined1 *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "uint local_68;" type_identifier identifier ;) (declaration "char **local_64;" primitive_type (pointer_declarator "**local_64" * (pointer_declarator "*local_64" * identifier)) ;) (declaration "undefined **local_60;" type_identifier (pointer_declarator "**local_60" * (pointer_declarator "*local_60" * identifier)) ;) (declaration "undefined **local_5c;" type_identifier (pointer_declarator "**local_5c" * (pointer_declarator "*local_5c" * identifier)) ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "undefined1 local_54 [8];" type_identifier (array_declarator "local_54 [8]" identifier [ number_literal ]) ;) (declaration "char *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "int *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined1 *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (expression_statement "local_5c = &__DT_PLTGOT;" (assignment_expression "local_5c = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "local_58 = param_7;" (assignment_expression "local_58 = param_7" identifier = identifier) ;) (expression_statement "local_68 = param_11;" (assignment_expression "local_68 = param_11" identifier = identifier) ;) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }" { (expression_statement "ppuStack_84 = (undefined **)0x237534;" (assignment_expression "ppuStack_84 = (undefined **)0x237534" identifier = (cast_expression "(undefined **)0x237534" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "ppuStack_80 = (undefined **)param_2;" (assignment_expression "ppuStack_80 = (undefined **)param_2" identifier = (cast_expression "(undefined **)param_2" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "local_5c = &__DT_PLTGOT;" (assignment_expression "local_5c = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) comment (expression_statement "FUN_0005f0b0("../../gold/symtab.h",0xaa);" (call_expression "FUN_0005f0b0("../../gold/symtab.h",0xaa)" identifier (argument_list "("../../gold/symtab.h",0xaa)" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal ))) ;) })) (expression_statement "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);" (assignment_expression "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01)" identifier = (cast_expression "(char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01)" ( (binary_expression "CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01" (call_expression "CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5)" identifier (argument_list "(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5)" ( (field_expression "local_64._1_3_" identifier . field_identifier) , (binary_expression "*(byte *)((int)param_4 + 0x2b) >> 5" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) ))) & number_literal) )))) ;) (expression_statement "local_6c = (undefined1 *)param_4[3];" (assignment_expression "local_6c = (undefined1 *)param_4[3]" identifier = (cast_expression "(undefined1 *)param_4[3]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) ;) (expression_statement "ppuVar10 = &__DT_PLTGOT;" (assignment_expression "ppuVar10 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (param_9 == (int *)param_4[2]) {\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(param_9 == (int *)param_4[2])" ( (binary_expression "param_9 == (int *)param_4[2]" identifier == (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) )) (compound_statement "{\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }" { (if_statement "if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;" if (parenthesized_expression "((byte)local_64 == '\0')" ( (binary_expression "(byte)local_64 == '\0'" (cast_expression "(byte)local_64" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }" { (expression_statement "local_5c = &__DT_PLTGOT;" (assignment_expression "local_5c = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "cVar5 = FUN_00122bf0(local_6c);" (assignment_expression "cVar5 = FUN_00122bf0(local_6c)" identifier = (call_expression "FUN_00122bf0(local_6c)" identifier (argument_list "(local_6c)" ( identifier )))) ;) (expression_statement "ppuVar10 = local_5c;" (assignment_expression "ppuVar10 = local_5c" identifier = identifier) ;) (if_statement "if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;" if (parenthesized_expression "((cVar5 == '\x01') || ((char)local_58 == '\0'))" ( (binary_expression "(cVar5 == '\x01') || ((char)local_58 == '\0')" (parenthesized_expression "(cVar5 == '\x01')" ( (binary_expression "cVar5 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) || (parenthesized_expression "((char)local_58 == '\0')" ( (binary_expression "(char)local_58 == '\0'" (cast_expression "(char)local_58" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00165abe;" goto statement_identifier ;)) }) (else_clause "else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;" else (if_statement "if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;" if (parenthesized_expression "((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c))))" ( (binary_expression "(local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))" (parenthesized_expression "(local_6c != (undefined1 *)0x0)" ( (binary_expression "local_6c != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))" ( (parenthesized_expression "(local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c))" ( (comma_expression "local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" (assignment_expression "local_58._0_1_ = (char)param_7" (field_expression "local_58._0_1_" identifier . field_identifier) = (cast_expression "(char)param_7" ( (type_descriptor "char" primitive_type) ) identifier)) , (comma_expression "bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" (assignment_expression "bVar14 = (char)local_58 != '\0'" identifier = (binary_expression "(char)local_58 != '\0'" (cast_expression "(char)local_58" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence '))) , (comma_expression "ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" (assignment_expression "ppuVar10 = local_5c" identifier = identifier) , (binary_expression "bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" identifier && (parenthesized_expression "(local_5c = &__DT_PLTGOT, param_6 == local_6c)" ( (comma_expression "local_5c = &__DT_PLTGOT, param_6 == local_6c" (assignment_expression "local_5c = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) , (binary_expression "param_6 == local_6c" identifier == identifier)) )))))) )) ))) )) (goto_statement "goto LAB_00165d65;" goto statement_identifier ;)))) }) (else_clause "else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }" else (compound_statement "{\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }" { (labeled_statement "LAB_00165abe:\n    local_5c = ppuVar10;" statement_identifier : (expression_statement "local_5c = ppuVar10;" (assignment_expression "local_5c = ppuVar10" identifier = identifier) ;)) (expression_statement "bVar14 = (char)local_58 == '\0';" (assignment_expression "bVar14 = (char)local_58 == '\0'" identifier = (binary_expression "(char)local_58 == '\0'" (cast_expression "(char)local_58" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "ppuVar10 = local_5c;" (assignment_expression "ppuVar10 = local_5c" identifier = identifier) ;) (if_statement "if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }" if (parenthesized_expression "((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1))))" ( (binary_expression "(param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))" (parenthesized_expression "(param_6 == (undefined1 *)0xfff1 && bVar14)" ( (binary_expression "param_6 == (undefined1 *)0xfff1 && bVar14" (binary_expression "param_6 == (undefined1 *)0xfff1" identifier == (cast_expression "(undefined1 *)0xfff1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) && (parenthesized_expression "(((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))" ( (parenthesized_expression "((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1))" ( (binary_expression "(byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)" (binary_expression "(byte)local_64 == '\0'" (cast_expression "(byte)local_64" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(local_6c == (undefined1 *)0xfff1)" ( (binary_expression "local_6c == (undefined1 *)0xfff1" identifier == (cast_expression "(undefined1 *)0xfff1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) ))) )) (compound_statement "{\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }" { (labeled_statement "LAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);" statement_identifier : (expression_statement "uVar12 = *(uint *)(*param_5 + 4);" (assignment_expression "uVar12 = *(uint *)(*param_5 + 4)" identifier = (pointer_expression "*(uint *)(*param_5 + 4)" * (cast_expression "(uint *)(*param_5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 4)" ( (binary_expression "*param_5 + 4" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;)) (expression_statement "ppuVar10 = local_5c;" (assignment_expression "ppuVar10 = local_5c" identifier = identifier) ;) (if_statement "if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }" if (parenthesized_expression "((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc])" ( (binary_expression "(uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]" (parenthesized_expression "(uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18)" ( (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal)) )) == (subscript_expression "param_4[0xc]" identifier [ number_literal ])) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) }))) (expression_statement "local_5c = ppuVar10;" (assignment_expression "local_5c = ppuVar10" identifier = identifier) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "local_60 = local_5c + 0xde;" (assignment_expression "local_60 = local_5c + 0xde" identifier = (binary_expression "local_5c + 0xde" identifier + number_literal)) ;) (expression_statement "piVar2 = *(int **)(*local_60 + 0xc);" (assignment_expression "piVar2 = *(int **)(*local_60 + 0xc)" identifier = (pointer_expression "*(int **)(*local_60 + 0xc)" * (cast_expression "(int **)(*local_60 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_60 + 0xc)" ( (binary_expression "*local_60 + 0xc" (pointer_expression "*local_60" * identifier) + number_literal) ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }" { (expression_statement "ppuStack_84 = local_5c + -0x32ad3;" (assignment_expression "ppuStack_84 = local_5c + -0x32ad3" identifier = (binary_expression "local_5c + -0x32ad3" identifier + number_literal)) ;) (expression_statement "ppuStack_80 = (undefined **)piVar2;" (assignment_expression "ppuStack_80 = (undefined **)piVar2" identifier = (cast_expression "(undefined **)piVar2" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) comment (expression_statement "FUN_0005f0b0(local_5c + -0x385a4,0x69);" (call_expression "FUN_0005f0b0(local_5c + -0x385a4,0x69)" identifier (argument_list "(local_5c + -0x385a4,0x69)" ( (binary_expression "local_5c + -0x385a4" identifier + number_literal) , number_literal ))) ;) })) (if_statement "if ((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     ) {\n    return;\n  }" if (parenthesized_expression "((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     )" ( (binary_expression "(*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')" (parenthesized_expression "(*(char *)(piVar2[1] + 0xd) != '\0')" ( (binary_expression "*(char *)(piVar2[1] + 0xd) != '\0'" (pointer_expression "*(char *)(piVar2[1] + 0xd)" * (cast_expression "(char *)(piVar2[1] + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar2[1] + 0xd)" ( (binary_expression "piVar2[1] + 0xd" (subscript_expression "piVar2[1]" identifier [ number_literal ]) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')" ( (comma_expression "cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0'" (assignment_expression "cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10)" identifier = (call_expression "(**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10)" (parenthesized_expression "(**(code **)(*piVar2 + 0xa4))" ( (pointer_expression "**(code **)(*piVar2 + 0xa4)" * (pointer_expression "*(code **)(*piVar2 + 0xa4)" * (cast_expression "(code **)(*piVar2 + 0xa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0xa4)" ( (binary_expression "*piVar2 + 0xa4" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,param_4,param_5,param_9,param_10)" ( identifier , identifier , identifier , identifier , identifier )))) , (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if ((*(byte *)(param_9 + 0xb) & 1) == 0) {\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" if (parenthesized_expression "((*(byte *)(param_9 + 0xb) & 1) == 0)" ( (binary_expression "(*(byte *)(param_9 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_9 + 0xb) & 1)" ( (binary_expression "*(byte *)(param_9 + 0xb) & 1" (pointer_expression "*(byte *)(param_9 + 0xb)" * (cast_expression "(byte *)(param_9 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_9 + 0xb)" ( (binary_expression "param_9 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" { (expression_statement "pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);" (assignment_expression "pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf)" identifier = (cast_expression "(char *)(*(byte *)(*param_5 + 0xc) & 0xf)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(byte *)(*param_5 + 0xc) & 0xf)" ( (binary_expression "*(byte *)(*param_5 + 0xc) & 0xf" (pointer_expression "*(byte *)(*param_5 + 0xc)" * (cast_expression "(byte *)(*param_5 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0xc)" ( (binary_expression "*param_5 + 0xc" (pointer_expression "*param_5" * identifier) + number_literal) )))) & number_literal) )))) ;) (if_statement "if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }" if (parenthesized_expression "(((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))" ( (binary_expression "((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')))" (parenthesized_expression "((char)pcVar7 == '\x05')" ( (binary_expression "(char)pcVar7 == '\x05'" (cast_expression "(char)pcVar7" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\x05'" ' escape_sequence ')) )) && (parenthesized_expression "(((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')))" ( (parenthesized_expression "((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))" ( (binary_expression "(char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')" (binary_expression "(char)local_58 != '\0'" (cast_expression "(char)local_58" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')" ( (comma_expression "pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'" (assignment_expression "pcVar7 = (char *)FUN_00122bf0(param_6)" identifier = (cast_expression "(char *)FUN_00122bf0(param_6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00122bf0(param_6)" identifier (argument_list "(param_6)" ( identifier ))))) , (binary_expression "(char)pcVar7 == '\0'" (cast_expression "(char)pcVar7" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence '))) ))) )) ))) )) (compound_statement "{\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }" { (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }" { (expression_statement "uVar9 = *(undefined4 *)(param_4[2] + 4);" (assignment_expression "uVar9 = *(undefined4 *)(param_4[2] + 4)" identifier = (pointer_expression "*(undefined4 *)(param_4[2] + 4)" * (cast_expression "(undefined4 *)(param_4[2] + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 4)" ( (binary_expression "param_4[2] + 4" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "FUN_00123e20(&local_34,param_4);" (call_expression "FUN_00123e20(&local_34,param_4)" identifier (argument_list "(&local_34,param_4)" ( (pointer_expression "&local_34" & identifier) , identifier ))) ;) (expression_statement "puVar4 = local_34;" (assignment_expression "puVar4 = local_34" identifier = identifier) ;) (expression_statement "uVar11 = gettext(local_5c + -0x32aad);" (assignment_expression "uVar11 = gettext(local_5c + -0x32aad)" identifier = (call_expression "gettext(local_5c + -0x32aad)" identifier (argument_list "(local_5c + -0x32aad)" ( (binary_expression "local_5c + -0x32aad" identifier + number_literal) )))) ;) comment (expression_statement "FUN_0005ad30(uVar11,puVar4,uVar9);" (call_expression "FUN_0005ad30(uVar11,puVar4,uVar9)" identifier (argument_list "(uVar11,puVar4,uVar9)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_34 == &local_2c) {\n          return;\n        }" if (parenthesized_expression "(local_34 == &local_2c)" ( (binary_expression "local_34 == &local_2c" identifier == (pointer_expression "&local_2c" & identifier)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "FUN_001807a0(local_34);" (call_expression "FUN_001807a0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_001661e5;" goto statement_identifier ;) })) (expression_statement "*(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;" (assignment_expression "*(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)param_4 + 0x2a) | 0x80" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "iVar8 = (**(code **)(*param_9 + 0x14))(param_9);" (assignment_expression "iVar8 = (**(code **)(*param_9 + 0x14))(param_9)" identifier = (call_expression "(**(code **)(*param_9 + 0x14))(param_9)" (parenthesized_expression "(**(code **)(*param_9 + 0x14))" ( (pointer_expression "**(code **)(*param_9 + 0x14)" * (pointer_expression "*(code **)(*param_9 + 0x14)" * (cast_expression "(code **)(*param_9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_9 + 0x14)" ( (binary_expression "*param_9 + 0x14" (pointer_expression "*param_9" * identifier) + number_literal) ))))) )) (argument_list "(param_9)" ( identifier )))) ;) }) (else_clause "else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" else (compound_statement "{\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" { (if_statement "if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }" if (parenthesized_expression "((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2))" ( (binary_expression "(param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)" (parenthesized_expression "(param_6 == (undefined1 *)0x0)" ( (binary_expression "param_6 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)" ( (binary_expression "(*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2" (binary_expression "(*(byte *)((int)param_4 + 0x29) & 3) - 1" (parenthesized_expression "(*(byte *)((int)param_4 + 0x29) & 3)" ( (binary_expression "*(byte *)((int)param_4 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_4 + 0x29)" * (cast_expression "(byte *)((int)param_4 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x29)" ( (binary_expression "(int)param_4 + 0x29" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) - number_literal) < number_literal) ))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;" (assignment_expression "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)param_4 + 0x2b) | 1" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "iVar8 = (**(code **)(*param_9 + 0x14))(param_9);" (assignment_expression "iVar8 = (**(code **)(*param_9 + 0x14))(param_9)" identifier = (call_expression "(**(code **)(*param_9 + 0x14))(param_9)" (parenthesized_expression "(**(code **)(*param_9 + 0x14))" ( (pointer_expression "**(code **)(*param_9 + 0x14)" * (pointer_expression "*(code **)(*param_9 + 0x14)" * (cast_expression "(code **)(*param_9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_9 + 0x14)" ( (binary_expression "*param_9 + 0x14" (pointer_expression "*param_9" * identifier) + number_literal) ))))) )) (argument_list "(param_9)" ( identifier )))) ;) }))) (if_statement "if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }" if (parenthesized_expression "((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0))" ( (binary_expression "(iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)" (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) && (parenthesized_expression "((*(byte *)(param_9 + 0xb) & 1) == 0)" ( (binary_expression "(*(byte *)(param_9 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_9 + 0xb) & 1)" ( (binary_expression "*(byte *)(param_9 + 0xb) & 1" (pointer_expression "*(byte *)(param_9 + 0xb)" * (cast_expression "(byte *)(param_9 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_9 + 0xb)" ( (binary_expression "param_9 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }" { (expression_statement "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;" (assignment_expression "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)param_4 + 0x2b) | 0x40" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) (if_statement "if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }\n  else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }" if (parenthesized_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0))" ( (binary_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)" (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)" ( (comma_expression "iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0" (assignment_expression "iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2])" identifier = (call_expression "(**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2])" (parenthesized_expression "(**(code **)(*(int *)param_4[2] + 0x14))" ( (pointer_expression "**(code **)(*(int *)param_4[2] + 0x14)" * (pointer_expression "*(code **)(*(int *)param_4[2] + 0x14)" * (cast_expression "(code **)(*(int *)param_4[2] + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_4[2] + 0x14)" ( (binary_expression "*(int *)param_4[2] + 0x14" (pointer_expression "*(int *)param_4[2]" * (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((int *)param_4[2])" ( (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) )))) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }" { (expression_statement "iVar8 = *(int *)(*local_60 + 8);" (assignment_expression "iVar8 = *(int *)(*local_60 + 8)" identifier = (pointer_expression "*(int *)(*local_60 + 8)" * (cast_expression "(int *)(*local_60 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_60 + 8)" ( (binary_expression "*local_60 + 8" (pointer_expression "*local_60" * identifier) + number_literal) ))))) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if (iVar8 == 0) goto LAB_00165d90;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00165d90;" goto statement_identifier ;)) (if_statement "if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }" if (parenthesized_expression "(*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0')" ( (binary_expression "*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0'" (pointer_expression "*(char *)(*(int *)(iVar8 + 0x593c) + 0x61)" * (cast_expression "(char *)(*(int *)(iVar8 + 0x593c) + 0x61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar8 + 0x593c) + 0x61)" ( (binary_expression "*(int *)(iVar8 + 0x593c) + 0x61" (pointer_expression "*(int *)(iVar8 + 0x593c)" * (cast_expression "(int *)(iVar8 + 0x593c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x593c)" ( (binary_expression "iVar8 + 0x593c" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }" { (if_statement "if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }" if (parenthesized_expression "(((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0'))))" ( (binary_expression "((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))" (parenthesized_expression "((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01'))" ( (binary_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')" (parenthesized_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0))" ( (binary_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)" (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)((int)param_4 + 0x2b) & 0x20" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')" ( (comma_expression "cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01'" (assignment_expression "cVar5 = FUN_00122bf0(param_4[3])" identifier = (call_expression "FUN_00122bf0(param_4[3])" identifier (argument_list "(param_4[3])" ( (subscript_expression "param_4[3]" identifier [ number_literal ]) )))) , (binary_expression "cVar5 != '\x01'" identifier != (char_literal "'\x01'" ' escape_sequence '))) ))) )) || (parenthesized_expression "(((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))" ( (parenthesized_expression "((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0'))" ( (binary_expression "(char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')" (binary_expression "(char)local_58 != '\0'" (cast_expression "(char)local_58" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')" ( (comma_expression "cVar5 = FUN_00122bf0(param_6), cVar5 == '\0'" (assignment_expression "cVar5 = FUN_00122bf0(param_6)" identifier = (call_expression "FUN_00122bf0(param_6)" identifier (argument_list "(param_6)" ( identifier )))) , (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) ))) )) (compound_statement "{\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }" { (expression_statement "ppuStack_84 = param_10;" (assignment_expression "ppuStack_84 = param_10" identifier = identifier) ;) (expression_statement "FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);" (call_expression "FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9)" identifier (argument_list "(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9)" ( identifier , identifier , identifier , identifier , (binary_expression "local_58 & 0xff" identifier & number_literal) , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "local_58 = param_4[0xd];" (assignment_expression "local_58 = param_4[0xd]" identifier = (subscript_expression "param_4[0xd]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = param_4[0xc];" (assignment_expression "uVar12 = param_4[0xc]" identifier = (subscript_expression "param_4[0xc]" identifier [ number_literal ])) ;) (expression_statement "ppuStack_84 = param_10;" (assignment_expression "ppuStack_84 = param_10" identifier = identifier) ;) (expression_statement "FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);" (call_expression "FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9)" identifier (argument_list "(param_3,param_4,param_5,param_6,0,param_9)" ( identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }" if (parenthesized_expression "((uint)param_4[0xd] < local_58)" ( (binary_expression "(uint)param_4[0xd] < local_58" (cast_expression "(uint)param_4[0xd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0xd]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n        param_4[0xd] = local_58;\n      }" { (expression_statement "param_4[0xd] = local_58;" (assignment_expression "param_4[0xd] = local_58" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }" if (parenthesized_expression "(uVar12 <= (uint)param_4[0xc])" ( (binary_expression "uVar12 <= (uint)param_4[0xc]" identifier <= (cast_expression "(uint)param_4[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0xc]" identifier [ number_literal ]))) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "param_4[0xc] = uVar12;" (assignment_expression "param_4[0xc] = uVar12" (subscript_expression "param_4[0xc]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }" else (compound_statement "{\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }" { (expression_statement "iVar8 = *(int *)(*local_60 + 8);" (assignment_expression "iVar8 = *(int *)(*local_60 + 8)" identifier = (pointer_expression "*(int *)(*local_60 + 8)" * (cast_expression "(int *)(*local_60 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_60 + 8)" ( (binary_expression "*local_60 + 8" (pointer_expression "*local_60" * identifier) + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) goto LAB_00165d90;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00165d90;" goto statement_identifier ;)) }))) (if_statement "if (*(char *)(iVar8 + 0xe0d) == '\0') {\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }\n  else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar8 + 0xe0d) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0xe0d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0xe0d)" * (cast_expression "(char *)(iVar8 + 0xe0d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xe0d)" ( (binary_expression "iVar8 + 0xe0d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }" { (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) }) (else_clause "else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }" else (compound_statement "{\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "iVar8 = *param_5;" (assignment_expression "iVar8 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (if_statement "if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }" if (parenthesized_expression "((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2)" ( (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar8 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) >> number_literal) != number_literal) )) (compound_statement "{\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }" { (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;" if (parenthesized_expression "(*(byte *)(param_4 + 10) >> 4 != 2)" ( (binary_expression "*(byte *)(param_4 + 10) >> 4 != 2" (binary_expression "*(byte *)(param_4 + 10) >> 4" (pointer_expression "*(byte *)(param_4 + 10)" * (cast_expression "(byte *)(param_4 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) >> number_literal) != number_literal) )) (goto_statement "goto LAB_00165ba8;" goto statement_identifier ;)) })) (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }" if (parenthesized_expression "((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0))" ( (binary_expression "(((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)" (parenthesized_expression "(((byte)local_64 & param_8 != 0) != 0)" ( (binary_expression "((byte)local_64 & param_8 != 0) != 0" (parenthesized_expression "((byte)local_64 & param_8 != 0)" ( (binary_expression "(byte)local_64 & param_8 != 0" (cast_expression "(byte)local_64" ( (type_descriptor "byte" type_identifier) ) identifier) & (binary_expression "param_8 != 0" identifier != number_literal)) )) != number_literal) )) && (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)" ( (comma_expression "pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) , (binary_expression "local_6c != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }" { (expression_statement "uVar12 = *(uint *)(iVar8 + 8);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 8)" identifier = (pointer_expression "*(uint *)(iVar8 + 8)" * (cast_expression "(uint *)(iVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }" if (parenthesized_expression "((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0))" ( (binary_expression "(uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)" (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)" ( (comma_expression "pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) , (binary_expression "param_4[0xd] != 0" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }" { (expression_statement "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);" (assignment_expression "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f)" identifier = (cast_expression "(char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f)" ( (binary_expression "CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f" (call_expression "CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc))" identifier (argument_list "(local_64._1_3_,*(byte *)(iVar8 + 0xc))" ( (field_expression "local_64._1_3_" identifier . field_identifier) , (pointer_expression "*(byte *)(iVar8 + 0xc)" * (cast_expression "(byte *)(iVar8 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) ))) & number_literal) )))) ;) (if_statement "if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }" if (parenthesized_expression "(((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12))" ( (binary_expression "((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)" (parenthesized_expression "((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf))" ( (binary_expression "(byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)" (cast_expression "(byte)local_64" ( (type_descriptor "byte" type_identifier) ) identifier) != (parenthesized_expression "(*(byte *)(param_4 + 10) & 0xf)" ( (binary_expression "*(byte *)(param_4 + 10) & 0xf" (pointer_expression "*(byte *)(param_4 + 10)" * (cast_expression "(byte *)(param_4 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) & number_literal) ))) )) || (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)" ( (comma_expression "pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) , (binary_expression "param_4[0xd] != uVar12" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) != identifier)) ))) )) (compound_statement "{\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }" { (expression_statement "pcVar7 = (char *)*param_4;" (assignment_expression "pcVar7 = (char *)*param_4" identifier = (cast_expression "(char *)*param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }" if (parenthesized_expression "((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z'))" ( (binary_expression "(*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')" (parenthesized_expression "(*pcVar7 == '_')" ( (binary_expression "*pcVar7 == '_'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'_'" ' character ')) )) && (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')" ( (comma_expression "pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z'" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) , (binary_expression "pcVar7[1] == 'Z'" (subscript_expression "pcVar7[1]" identifier [ number_literal ]) == (char_literal "'Z'" ' character '))) ))) )) (compound_statement "{\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }" { (expression_statement "uVar12 = *(uint *)(iVar8 + 4);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 4)" identifier = (pointer_expression "*(uint *)(iVar8 + 4)" * (cast_expression "(uint *)(iVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_44 = param_9;" (assignment_expression "local_44 = param_9" identifier = identifier) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;" (assignment_expression "local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (expression_statement "local_40 = param_8;" (assignment_expression "local_40 = param_8" identifier = identifier) ;) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }" { (labeled_statement "LAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;" statement_identifier : (expression_statement "ppuStack_84 = local_5c + -0x32ab8;" (assignment_expression "ppuStack_84 = local_5c + -0x32ab8" identifier = (binary_expression "local_5c + -0x32ab8" identifier + number_literal)) ;)) (expression_statement "ppuStack_80 = (undefined **)pcVar7;" (assignment_expression "ppuStack_80 = (undefined **)pcVar7" identifier = (cast_expression "(undefined **)pcVar7" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) comment (expression_statement "FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);" (call_expression "FUN_0005f0b0((int)local_5c + -0xe1673,0xa1)" identifier (argument_list "((int)local_5c + -0xe1673,0xa1)" ( (binary_expression "(int)local_5c + -0xe1673" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal ))) ;) })) (expression_statement "local_34 = (undefined4 *)param_4[2];" (assignment_expression "local_34 = (undefined4 *)param_4[2]" identifier = (cast_expression "(undefined4 *)param_4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = local_6c;" (assignment_expression "local_30 = local_6c" identifier = identifier) ;) (expression_statement "local_2c = param_4[0xc];" (assignment_expression "local_2c = param_4[0xc]" identifier = (subscript_expression "param_4[0xc]" identifier [ number_literal ])) ;) (expression_statement "ppuStack_80 = param_3;" (assignment_expression "ppuStack_80 = param_3" identifier = identifier) ;) (expression_statement "ppuStack_84 = param_3;" (assignment_expression "ppuStack_84 = param_3" identifier = identifier) ;) (expression_statement "local_64 = &local_4c;" (assignment_expression "local_64 = &local_4c" identifier = (pointer_expression "&local_4c" & identifier)) ;) (expression_statement "local_4c = pcVar7;" (assignment_expression "local_4c = pcVar7" identifier = identifier) ;) (expression_statement "local_48 = FUN_001646d0(param_3 + 0x47,local_64);" (assignment_expression "local_48 = FUN_001646d0(param_3 + 0x47,local_64)" identifier = (call_expression "FUN_001646d0(param_3 + 0x47,local_64)" identifier (argument_list "(param_3 + 0x47,local_64)" ( (binary_expression "param_3 + 0x47" identifier + number_literal) , identifier )))) ;) (expression_statement "local_6c = local_54;" (assignment_expression "local_6c = local_54" identifier = identifier) ;) (expression_statement "local_78 = &local_48;" (assignment_expression "local_78 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);" (call_expression "FUN_001650c0(local_6c,local_48,local_70,local_78,0,1)" identifier (argument_list "(local_6c,local_48,local_70,local_78,0,1)" ( identifier , identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "local_4c = (char *)*param_4;" (assignment_expression "local_4c = (char *)*param_4" identifier = (cast_expression "(char *)*param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "local_48 = FUN_001646d0(param_3 + 0x47,local_64);" (assignment_expression "local_48 = FUN_001646d0(param_3 + 0x47,local_64)" identifier = (call_expression "FUN_001646d0(param_3 + 0x47,local_64)" identifier (argument_list "(param_3 + 0x47,local_64)" ( (binary_expression "param_3 + 0x47" identifier + number_literal) , identifier )))) ;) (expression_statement "FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);" (call_expression "FUN_001650c0(local_6c,local_48,local_74,local_78,0,1)" identifier (argument_list "(local_6c,local_48,local_74,local_78,0,1)" ( identifier , identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "pppuVar13 = &ppuStack_84;" (assignment_expression "pppuVar13 = &ppuStack_84" identifier = (pointer_expression "&ppuStack_84" & identifier)) ;) })) })) })) })) }))) (labeled_statement "LAB_00165ba8:\n  iVar8 = *param_9;" statement_identifier : (expression_statement "iVar8 = *param_9;" (assignment_expression "iVar8 = *param_9" identifier = (pointer_expression "*param_9" * identifier)) ;)) (expression_statement "*(int **)((int)pppuVar13 + -0x10) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0x10) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0x10)" * (cast_expression "(int **)((int)pppuVar13 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar8 + 0x14);" (assignment_expression "pcVar3 = *(code **)(iVar8 + 0x14)" identifier = (pointer_expression "*(code **)(iVar8 + 0x14)" * (cast_expression "(code **)(iVar8 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = (*pcVar3)();" (assignment_expression "iVar8 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar8 == 0) {\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }" { (expression_statement "bVar6 = *(byte *)(*param_5 + 0xc);" (assignment_expression "bVar6 = *(byte *)(*param_5 + 0xc)" identifier = (pointer_expression "*(byte *)(*param_5 + 0xc)" * (cast_expression "(byte *)(*param_5 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0xc)" ( (binary_expression "*param_5 + 0xc" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }" else (compound_statement "{\n    bVar6 = *(byte *)(param_4 + 10);\n  }" { (expression_statement "bVar6 = *(byte *)(param_4 + 10);" (assignment_expression "bVar6 = *(byte *)(param_4 + 10)" identifier = (pointer_expression "*(byte *)(param_4 + 10)" * (cast_expression "(byte *)(param_4 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) ))))) ;) }))) (expression_statement "local_64 = (char **)(local_58 & 0xff);" (assignment_expression "local_64 = (char **)(local_58 & 0xff)" identifier = (cast_expression "(char **)(local_58 & 0xff)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_58 & 0xff)" ( (binary_expression "local_58 & 0xff" identifier & number_literal) )))) ;) (expression_statement "*(char ***)((int)pppuVar13 + -0x10) = local_64;" (assignment_expression "*(char ***)((int)pppuVar13 + -0x10) = local_64" (pointer_expression "*(char ***)((int)pppuVar13 + -0x10)" * (cast_expression "(char ***)((int)pppuVar13 + -0x10)" ( (type_descriptor "char ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = FUN_001630f0();" (assignment_expression "uVar9 = FUN_001630f0()" identifier = (call_expression "FUN_001630f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_58 = param_4[0xd];" (assignment_expression "local_58 = param_4[0xd]" identifier = (subscript_expression "param_4[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;" (assignment_expression "*(uint *)((int)pppuVar13 + -4) = local_68 & 0xff" (pointer_expression "*(uint *)((int)pppuVar13 + -4)" * (cast_expression "(uint *)((int)pppuVar13 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -4)" ( (binary_expression "(int)pppuVar13 + -4" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_68 & 0xff" identifier & number_literal)) ;) (expression_statement "*(undefined4 ***)((int)pppuVar13 + -8) = local_74;" (assignment_expression "*(undefined4 ***)((int)pppuVar13 + -8) = local_74" (pointer_expression "*(undefined4 ***)((int)pppuVar13 + -8)" * (cast_expression "(undefined4 ***)((int)pppuVar13 + -8)" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -8)" ( (binary_expression "(int)pppuVar13 + -8" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)((int)pppuVar13 + -0xc) = local_70;" (assignment_expression "*(int ***)((int)pppuVar13 + -0xc) = local_70" (pointer_expression "*(int ***)((int)pppuVar13 + -0xc)" * (cast_expression "(int ***)((int)pppuVar13 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0xc)" ( (binary_expression "(int)pppuVar13 + -0xc" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)pppuVar13 + -0x10) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0x10) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0x10)" * (cast_expression "(int **)((int)pppuVar13 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;" (assignment_expression "*(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf" (pointer_expression "*(uint *)((int)pppuVar13 + -0x18)" * (cast_expression "(uint *)((int)pppuVar13 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x18)" ( (binary_expression "(int)pppuVar13 + -0x18" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "bVar6 & 0xf" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x1c)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x1c)" ( (binary_expression "(int)pppuVar13 + -0x1c" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)pppuVar13 + -0x20) = param_4;" (assignment_expression "*(undefined4 **)((int)pppuVar13 + -0x20) = param_4" (pointer_expression "*(undefined4 **)((int)pppuVar13 + -0x20)" * (cast_expression "(undefined4 **)((int)pppuVar13 + -0x20)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x20)" ( (binary_expression "(int)pppuVar13 + -0x20" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x24)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x24)" ( (binary_expression "(int)pppuVar13 + -0x24" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_00163520();" (assignment_expression "cVar5 = FUN_00163520()" identifier = (call_expression "FUN_00163520()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 == '\0') {\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }" { (expression_statement "iVar8 = *param_5;" (assignment_expression "iVar8 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (if_statement "if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" if (parenthesized_expression "((char)local_44 != '\0')" ( (binary_expression "(char)local_44 != '\0'" (cast_expression "(char)local_44" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" { (expression_statement "uVar12 = *(uint *)(iVar8 + 8);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 8)" identifier = (pointer_expression "*(uint *)(iVar8 + 8)" * (cast_expression "(uint *)(iVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (if_statement "if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }" if (parenthesized_expression "(local_58 < uVar12)" ( (binary_expression "local_58 < uVar12" identifier < identifier) )) (compound_statement "{\n        param_4[0xd] = uVar12;\n      }" { (expression_statement "param_4[0xd] = uVar12;" (assignment_expression "param_4[0xd] = uVar12" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar12 = *(uint *)(iVar8 + 4);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 4)" identifier = (pointer_expression "*(uint *)(iVar8 + 4)" * (cast_expression "(uint *)(iVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (if_statement "if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }" if (parenthesized_expression "((uint)param_4[0xc] < uVar12)" ( (binary_expression "(uint)param_4[0xc] < uVar12" (cast_expression "(uint)param_4[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0xc]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n        param_4[0xc] = uVar12;\n      }" { (expression_statement "param_4[0xc] = uVar12;" (assignment_expression "param_4[0xc] = uVar12" (subscript_expression "param_4[0xc]" identifier [ number_literal ]) = identifier) ;) })) })) (if_statement "if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }" if (parenthesized_expression "((char)local_34 != '\0')" ( (binary_expression "(char)local_34 != '\0'" (cast_expression "(char)local_34" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }" { (if_statement "if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }" if (parenthesized_expression "(((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0))" ( (binary_expression "((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)" (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 1) == 0)" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 1)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 1" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 2) != 0)" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 2) != 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 2)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 2" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }" { (expression_statement "*(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;" (assignment_expression "*(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02'" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) | (binary_expression "((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02'" (parenthesized_expression "((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2)" ( (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar8 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) >> number_literal) == number_literal) )) * (char_literal "'\x02'" ' escape_sequence '))) | number_literal)) ;) })) })) (expression_statement "bVar6 = *(byte *)(iVar8 + 0xd) & 3;" (assignment_expression "bVar6 = *(byte *)(iVar8 + 0xd) & 3" identifier = (binary_expression "*(byte *)(iVar8 + 0xd) & 3" (pointer_expression "*(byte *)(iVar8 + 0xd)" * (cast_expression "(byte *)(iVar8 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xd)" ( (binary_expression "iVar8 + 0xd" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }" if (parenthesized_expression "((*(byte *)(iVar8 + 0xd) & 3) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0xd) & 3) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0xd) & 3)" ( (binary_expression "*(byte *)(iVar8 + 0xd) & 3" (pointer_expression "*(byte *)(iVar8 + 0xd)" * (cast_expression "(byte *)(iVar8 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xd)" ( (binary_expression "iVar8 + 0xd" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }" { (expression_statement "bVar1 = *(byte *)((int)param_4 + 0x29);" (assignment_expression "bVar1 = *(byte *)((int)param_4 + 0x29)" identifier = (pointer_expression "*(byte *)((int)param_4 + 0x29)" * (cast_expression "(byte *)((int)param_4 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x29)" ( (binary_expression "(int)param_4 + 0x29" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }" if (parenthesized_expression "(((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3)))" ( (binary_expression "((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))" (parenthesized_expression "((bVar1 & 3) == 0)" ( (binary_expression "(bVar1 & 3) == 0" (parenthesized_expression "(bVar1 & 3)" ( (binary_expression "bVar1 & 3" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(bVar6 < (bVar1 & 3))" ( (binary_expression "bVar6 < (bVar1 & 3)" identifier < (parenthesized_expression "(bVar1 & 3)" ( (binary_expression "bVar1 & 3" identifier & number_literal) ))) ))) )) (compound_statement "{\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }" { (expression_statement "*(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;" (assignment_expression "*(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc" (pointer_expression "*(byte *)((int)param_4 + 0x29)" * (cast_expression "(byte *)((int)param_4 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x29)" ( (binary_expression "(int)param_4 + 0x29" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "bVar6 | bVar1 & 0xfc" identifier | (binary_expression "bVar1 & 0xfc" identifier & number_literal))) ;) })) })) }) (else_clause "else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }" else (compound_statement "{\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }" { (expression_statement "bVar6 = *(byte *)(param_4 + 10);" (assignment_expression "bVar6 = *(byte *)(param_4 + 10)" identifier = (pointer_expression "*(byte *)(param_4 + 10)" * (cast_expression "(byte *)(param_4 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = param_4[0xc];" (assignment_expression "uVar12 = param_4[0xc]" identifier = (subscript_expression "param_4[0xc]" identifier [ number_literal ])) ;) (expression_statement "*(undefined ***)((int)pppuVar13 + -8) = param_10;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -8) = param_10" (pointer_expression "*(undefined ***)((int)pppuVar13 + -8)" * (cast_expression "(undefined ***)((int)pppuVar13 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -8)" ( (binary_expression "(int)pppuVar13 + -8" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)pppuVar13 + -0xc) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0xc) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0xc)" * (cast_expression "(int **)((int)pppuVar13 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0xc)" ( (binary_expression "(int)pppuVar13 + -0xc" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(char ***)((int)pppuVar13 + -0x10) = local_64;" (assignment_expression "*(char ***)((int)pppuVar13 + -0x10) = local_64" (pointer_expression "*(char ***)((int)pppuVar13 + -0x10)" * (cast_expression "(char ***)((int)pppuVar13 + -0x10)" ( (type_descriptor "char ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)((int)pppuVar13 + -0x14) = param_6;" (assignment_expression "*(undefined1 **)((int)pppuVar13 + -0x14) = param_6" (pointer_expression "*(undefined1 **)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined1 **)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)pppuVar13 + -0x18) = param_5;" (assignment_expression "*(int **)((int)pppuVar13 + -0x18) = param_5" (pointer_expression "*(int **)((int)pppuVar13 + -0x18)" * (cast_expression "(int **)((int)pppuVar13 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x18)" ( (binary_expression "(int)pppuVar13 + -0x18" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;" (assignment_expression "*(undefined4 **)((int)pppuVar13 + -0x1c) = param_4" (pointer_expression "*(undefined4 **)((int)pppuVar13 + -0x1c)" * (cast_expression "(undefined4 **)((int)pppuVar13 + -0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x1c)" ( (binary_expression "(int)pppuVar13 + -0x1c" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)((int)pppuVar13 + -0x20) = param_3;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -0x20) = param_3" (pointer_expression "*(undefined ***)((int)pppuVar13 + -0x20)" * (cast_expression "(undefined ***)((int)pppuVar13 + -0x20)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0x20)" ( (binary_expression "(int)pppuVar13 + -0x20" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);" (assignment_expression "local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4)" identifier = (call_expression "CONCAT31(local_68._1_3_,bVar6 >> 4)" identifier (argument_list "(local_68._1_3_,bVar6 >> 4)" ( (field_expression "local_68._1_3_" identifier . field_identifier) , (binary_expression "bVar6 >> 4" identifier >> number_literal) )))) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x24)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x24)" ( (binary_expression "(int)pppuVar13 + -0x24" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001648f0();" (call_expression "FUN_001648f0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" if (parenthesized_expression "((char)local_44 != '\0')" ( (binary_expression "(char)local_44 != '\0'" (cast_expression "(char)local_44" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" { (if_statement "if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }" if (parenthesized_expression "((uint)param_4[0xd] < local_58)" ( (binary_expression "(uint)param_4[0xd] < local_58" (cast_expression "(uint)param_4[0xd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0xd]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n        param_4[0xd] = local_58;\n      }" { (expression_statement "param_4[0xd] = local_58;" (assignment_expression "param_4[0xd] = local_58" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }" if (parenthesized_expression "((uint)param_4[0xc] < uVar12)" ( (binary_expression "(uint)param_4[0xc] < uVar12" (cast_expression "(uint)param_4[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0xc]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n        param_4[0xc] = uVar12;\n      }" { (expression_statement "param_4[0xc] = uVar12;" (assignment_expression "param_4[0xc] = uVar12" (subscript_expression "param_4[0xc]" identifier [ number_literal ]) = identifier) ;) })) })) (if_statement "if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }" if (parenthesized_expression "(((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0))))" ( (binary_expression "((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))" (parenthesized_expression "((char)local_34 != '\0')" ( (binary_expression "(char)local_34 != '\0'" (cast_expression "(char)local_34" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))" ( (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0))" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)" (binary_expression "(*(byte *)(param_4 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 1)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 1" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 2) != 0)" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 2) != 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 2)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 2" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) ))) )) (compound_statement "{\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }" { (expression_statement "*(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;" (assignment_expression "*(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02'" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) | (binary_expression "((char)local_68 == '\x02') * '\x02'" (parenthesized_expression "((char)local_68 == '\x02')" ( (binary_expression "(char)local_68 == '\x02'" (cast_expression "(char)local_68" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) * (char_literal "'\x02'" ' escape_sequence '))) | number_literal)) ;) })) }))) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }" { (expression_statement "bVar6 = *(byte *)(param_4[2] + 0x2c);" (assignment_expression "bVar6 = *(byte *)(param_4[2] + 0x2c)" identifier = (pointer_expression "*(byte *)(param_4[2] + 0x2c)" * (cast_expression "(byte *)(param_4[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 0x2c)" ( (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }" if (parenthesized_expression "((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0))" ( (binary_expression "(((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)" (parenthesized_expression "(((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0'))" ( (binary_expression "((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')" (parenthesized_expression "((bVar6 & 1) != 0)" ( (binary_expression "(bVar6 & 1) != 0" (parenthesized_expression "(bVar6 & 1)" ( (binary_expression "bVar6 & 1" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((char)*(byte *)((int)param_4 + 0x2a) < '\0')" ( (binary_expression "(char)*(byte *)((int)param_4 + 0x2a) < '\0'" (cast_expression "(char)*(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 2) == 0)" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 2) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 2)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 2" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }" { (expression_statement "*(byte *)(param_4[2] + 0x2c) = bVar6 | 2;" (assignment_expression "*(byte *)(param_4[2] + 0x2c) = bVar6 | 2" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" * (cast_expression "(byte *)(param_4[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 0x2c)" ( (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "bVar6 | 2" identifier | number_literal)) ;) })) })) (if_statement "if ((char)local_44 != '\0') {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }" if (parenthesized_expression "((char)local_44 != '\0')" ( (binary_expression "(char)local_44 != '\0'" (cast_expression "(char)local_44" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }" { (expression_statement "iVar8 = *(int *)(*local_60 + 8);" (assignment_expression "iVar8 = *(int *)(*local_60 + 8)" identifier = (pointer_expression "*(int *)(*local_60 + 8)" * (cast_expression "(int *)(*local_60 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_60 + 8)" ( (binary_expression "*local_60 + 8" (pointer_expression "*local_60" * identifier) + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }" { (labeled_statement "LAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;" statement_identifier : (expression_statement "*(int *)((int)pppuVar13 + -4) = iVar8;" (assignment_expression "*(int *)((int)pppuVar13 + -4) = iVar8" (pointer_expression "*(int *)((int)pppuVar13 + -4)" * (cast_expression "(int *)((int)pppuVar13 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -4)" ( (binary_expression "(int)pppuVar13 + -4" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba" (pointer_expression "*(undefined ***)((int)pppuVar13 + -8)" * (cast_expression "(undefined ***)((int)pppuVar13 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -8)" ( (binary_expression "(int)pppuVar13 + -8" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_5c + -0x32aba" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0xc)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0xc)" ( (binary_expression "(int)pppuVar13 + -0xc" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4" (pointer_expression "*(undefined ***)((int)pppuVar13 + -0x10)" * (cast_expression "(undefined ***)((int)pppuVar13 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_5c + -0x385a4" identifier + number_literal)) ;) comment (expression_statement "*(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;" (assignment_expression "*(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9" (pointer_expression "*(undefined **)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined **)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&UNK_00165da9" & identifier)) ;) (expression_statement "FUN_0005f0b0();" (call_expression "FUN_0005f0b0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }" if (parenthesized_expression "(*(char *)(iVar8 + 0x43e5) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x43e5) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x43e5)" * (cast_expression "(char *)(iVar8 + 0x43e5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x43e5)" ( (binary_expression "iVar8 + 0x43e5" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }" { (expression_statement "uVar12 = *(uint *)(*param_5 + 8);" (assignment_expression "uVar12 = *(uint *)(*param_5 + 8)" identifier = (pointer_expression "*(uint *)(*param_5 + 8)" * (cast_expression "(uint *)(*param_5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 8)" ( (binary_expression "*param_5 + 8" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" if (parenthesized_expression "(uVar12 < local_58)" ( (binary_expression "uVar12 < local_58" identifier < identifier) )) (compound_statement "{\n        ppuVar10 = local_5c + -0x32a9f;\n      }" { (expression_statement "ppuVar10 = local_5c + -0x32a9f;" (assignment_expression "ppuVar10 = local_5c + -0x32a9f" identifier = (binary_expression "local_5c + -0x32a9f" identifier + number_literal)) ;) }) (else_clause "else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" else (if_statement "if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" if (parenthesized_expression "(local_58 < uVar12)" ( (binary_expression "local_58 < uVar12" identifier < identifier) )) (compound_statement "{\n        ppuVar10 = local_5c + -0x32a94;\n      }" { (expression_statement "ppuVar10 = local_5c + -0x32a94;" (assignment_expression "ppuVar10 = local_5c + -0x32a94" identifier = (binary_expression "local_5c + -0x32a94" identifier + number_literal)) ;) }) (else_clause "else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" else (compound_statement "{\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" { (expression_statement "ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);" (assignment_expression "ppuVar10 = (undefined **)((int)local_5c + -0xcaa26)" identifier = (cast_expression "(undefined **)((int)local_5c + -0xcaa26)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_5c + -0xcaa26)" ( (binary_expression "(int)local_5c + -0xcaa26" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))))) (expression_statement "*(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10" (pointer_expression "*(undefined ***)((int)pppuVar13 + -0x10)" * (cast_expression "(undefined ***)((int)pppuVar13 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = gettext();" (assignment_expression "uVar9 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int **)((int)pppuVar13 + -0x10) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0x10) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0x10)" * (cast_expression "(int **)((int)pppuVar13 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 **)((int)pppuVar13 + -0x18) = param_4;" (assignment_expression "*(undefined4 **)((int)pppuVar13 + -0x18) = param_4" (pointer_expression "*(undefined4 **)((int)pppuVar13 + -0x18)" * (cast_expression "(undefined4 **)((int)pppuVar13 + -0x18)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x18)" ( (binary_expression "(int)pppuVar13 + -0x18" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x1c)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x1c)" ( (binary_expression "(int)pppuVar13 + -0x1c" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x20) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x20) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x20)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x20)" ( (binary_expression "(int)pppuVar13 + -0x20" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x24)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x24)" ( (binary_expression "(int)pppuVar13 + -0x24" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00163350();" (call_expression "FUN_00163350()" identifier (argument_list "()" ( ))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Enum "STB": Some values do not have unique names */\n/* WARNING: Enum "STT": Some values do not have unique names */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original name: resolve<32, true>\n   DWARF original prototype: void resolve<32,_true>(Symbol_table * this, Sized_symbol<32> * to,\n   Sym<32,_true> * sym, uint st_shndx, bool is_ordinary, uint orig_st_shndx, Object * object, char *\n   version, bool is_default_version) */\n\nvoid __thiscall\ngold::Symbol_table::resolve<32,_true>\n          (Symbol_table *this,Sized_symbol<32> *to,Sym<32,_true> *sym,uint st_shndx,bool is_ordinary\n          ,uint orig_st_shndx,Object *object,char *version,bool is_default_version)\n\n{\n  undefined1 *puVar1;\n  byte bVar2;\n  uint uVar3;\n  Target *pTVar4;\n  Object *pOVar5;\n  Sym_data<32> *pSVar6;\n  Output_segment *pOVar7;\n  _Hash_node_base *p_Var8;\n  pointer ppOVar9;\n  anon_union_4_3_b0f6f408_for_u1_ aVar10;\n  char cVar11;\n  bool bVar12;\n  byte bVar13;\n  int iVar14;\n  General_options *pGVar15;\n  STT SVar16;\n  uint uVar17;\n  char *pcVar18;\n  STT SVar19;\n  Symbol_table *pSVar20;\n  Symbol_table *pSVar21;\n  bool *local_74;\n  bool *local_70;\n  byte local_64;\n  undefined1 local_54 [12];\n  __node_gen_type __node_gen;\n  bool adjust_common_sizes;\n  uint local_40;\n  __bucket_type local_3c;\n  undefined4 local_38;\n  bool adjust_dyndef;\n  uint local_30;\n  _func_int_varargs **local_2c;\n  _Alloc_hider local_28;\n  \n  if (((to->super_Symbol).field_0x2a & 7) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx");\n  }\n  local_64 = (byte)(to->super_Symbol).field_0x2b >> 5 & 1;\n  uVar3 = (to->super_Symbol).u2_.shndx;\n  if (object == (to->super_Symbol).u1_.object) {\n    if (local_64 == 0) {\n      bVar12 = Symbol::is_common_shndx(uVar3);\n      if ((bVar12) || (!is_ordinary)) goto LAB_00165abe;\n    }\n    else if ((uVar3 != 0) && ((is_ordinary && (st_shndx == uVar3)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    if ((st_shndx == 0xfff1 && !is_ordinary) && ((local_64 == 0 && (uVar3 == 0xfff1)))) {\nLAB_00165d65:\n      uVar17 = sym->p_->st_value;\n      if ((uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18) ==\n          to->value_) {\n        return;\n      }\n    }\n  }\n  pTVar4 = parameters->target_;\n  if (pTVar4 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }\n  if ((*(char *)(*(int *)(pTVar4 + 4) + 0xd) == '\0') ||\n     (cVar11 = (**(code **)(*(int *)pTVar4 + 0xa4))(pTVar4,to,sym,object,version), cVar11 == '\0'))\n  {\n    if ((object->field_0x2c & 1) == 0) {\n      if (((sym->p_->st_info & 0xf) == 5) &&\n         ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n        if (((to->super_Symbol).field_0x2a & 7) == 0) {\n          ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n          Symbol::demangled_name(&to->super_Symbol);\n          aVar10 = _adjust_dyndef;\n          pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section");\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n          gold_warning(pcVar18,aVar10.object,ppOVar9);\n          if (_adjust_dyndef == (Object *)&local_2c) {\n            return;\n          }\n          operator_delete(_adjust_dyndef);\n          return;\n        }\n        goto LAB_001661e5;\n      }\n      puVar1 = &(to->super_Symbol).field_0x2a;\n      *puVar1 = *puVar1 | 0x80;\n      iVar14 = (*object->_vptr_Object[5])(object);\n    }\n    else {\n      if ((st_shndx == 0) && (((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2)) {\n        return;\n      }\n      puVar1 = &(to->super_Symbol).field_0x2b;\n      *puVar1 = *puVar1 | 1;\n      iVar14 = (*object->_vptr_Object[5])(object);\n    }\n    if ((iVar14 == 0) && ((object->field_0x2c & 1) == 0)) {\n      puVar1 = &(to->super_Symbol).field_0x2b;\n      *puVar1 = *puVar1 | 0x40;\n    }\n    if ((((to->super_Symbol).field_0x2a & 7) == 0) &&\n       (pOVar5 = (to->super_Symbol).u1_.object, iVar14 = (*pOVar5->_vptr_Object[5])(pOVar5),\n       iVar14 != 0)) {\n      pGVar15 = parameters->options_;\n      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;\n      if (pGVar15->plugins_->in_replacement_phase_ != false) {\n        if ((((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)) ||\n           ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n          override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n          return;\n        }\n        uVar3 = to->symsize_;\n        uVar17 = to->value_;\n        override<32,_true>(this,to,sym,st_shndx,false,object,version);\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (uVar17 <= to->value_) {\n          return;\n        }\n        to->value_ = uVar17;\n        return;\n      }\n    }\n    else {\n      pGVar15 = parameters->options_;\n      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;\n    }\n    if ((pGVar15->detect_odr_violations_).value != false) {\n      pSVar6 = sym->p_;\n      if ((((int)(uint)pSVar6->st_info >> 4 == 2) || ((byte)(to->super_Symbol).field_0x28 >> 4 == 2)\n          ) && (((local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0)))) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (((uVar17 != 0) && (to->symsize_ != 0)) &&\n           ((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)))) {\n          p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_;\n          if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {\n            uVar17 = pSVar6->st_value;\n            _adjust_common_sizes = object;\n            local_38 = 0;\n            local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);\n            local_40 = orig_st_shndx;\n            if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }\n            _adjust_dyndef = (to->super_Symbol).u1_;\n            local_28._M_p = (pointer)0x0;\n            local_2c = (_func_int_varargs **)to->value_;\n            pSVar20 = this;\n            pSVar21 = this;\n            local_54._8_4_ = p_Var8;\n            local_30 = uVar3;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);\n            local_54._8_4_ = (to->super_Symbol).name_;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);\n          }\n        }\n      }\n    }\n    local_70 = &adjust_common_sizes;\n    local_74 = &adjust_dyndef;\n    iVar14 = (*object->_vptr_Object[5])(object);\n    if (iVar14 == 0) {\n      SVar16 = (STT)sym->p_->st_info;\n      SVar19 = SVar16;\n    }\n    else {\n      SVar16 = (STT)sym->p_->st_info;\n      SVar19 = (uint)(byte)(to->super_Symbol).field_0x28;\n    }\n    uVar17 = symbol_to_bits((int)SVar16 >> 4,(bool)(object->field_0x2c & 1),st_shndx,is_ordinary);\n    uVar3 = to->symsize_;\n    bVar12 = should_override(&to->super_Symbol,uVar17,SVar19 & STT_HIPROC,OBJECT,object,local_70,\n                             local_74,is_default_version);\n    if (bVar12) {\n      bVar13 = (to->super_Symbol).field_0x28;\n      uVar17 = to->value_;\n      override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n      if (adjust_common_sizes != false) {\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }\n      if ((adjust_dyndef != false) &&\n         ((bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0)))) {\n        (to->super_Symbol).field_0x2c =\n             (to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    else {\n      pSVar6 = sym->p_;\n      if (adjust_common_sizes != false) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar3 < uVar17) {\n          to->symsize_ = uVar17;\n        }\n        uVar17 = pSVar6->st_value;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }\n      if (adjust_dyndef != false) {\n        bVar13 = (to->super_Symbol).field_0x2c;\n        if (((bVar13 & 1) == 0) || ((bVar13 & 2) != 0)) {\n          (to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;\n        }\n      }\n      bVar13 = pSVar6->st_other & 3;\n      if ((pSVar6->st_other & 3) != 0) {\n        bVar2 = (to->super_Symbol).field_0x29;\n        if (((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3))) {\n          (to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;\n        }\n      }\n    }\n    bVar13 = (to->super_Symbol).field_0x2a;\n    if ((bVar13 & 7) == 0) {\n      pOVar7 = (to->super_Symbol).u1_.output_segment;\n      bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      if ((((bVar2 & 1) != 0) && ((char)bVar13 < '\0')) &&\n         (((to->super_Symbol).field_0x2c & 2) == 0)) {\n        *(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_end_of_storage = bVar2 | 2;\n      }\n    }\n    if (adjust_common_sizes != false) {\n      if (parameters->options_ == (General_options *)0x0) {\nLAB_00165d90:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\n      if ((parameters->options_->warn_common_).value != false) {\n        uVar17 = sym->p_->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar17 < uVar3) {\n          pcVar18 = "common of \'%s\' overriding smaller common";\n        }\n        else if (uVar3 < uVar17) {\n          pcVar18 = "common of \'%s\' overidden by larger common";\n        }\n        else {\n          pcVar18 = "multiple common of \'%s\'";\n        }\n        pcVar18 = (char *)gettext(pcVar18);\n        report_resolve_problem(false,pcVar18,&to->super_Symbol,OBJECT,object);\n      }\n    }\n  }\n  return;\n}\n\n" comment comment comment comment comment (declaration "void __thiscall\ngold::Symbol_table::resolve<32,_true>\n          (Symbol_table *this,Sized_symbol<32> *to,Sym<32,_true> *sym,uint st_shndx,bool is_ordinary\n          ,uint orig_st_shndx,Object *object,char *version,bool is_default_version)\n\n{\n  undefined1 *puVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Symbol_table::" identifier : : identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>\n          (Symbol_table *this,Sized_symbol<32> *to,Sym<32,_true> *sym,uint st_shndx,bool is_ordinary\n          ,uint orig_st_shndx,Object *object,char *version,bool is_default_version)\n\n{\n  undefined1" (function_declarator "_true>\n          (Symbol_table *this,Sized_symbol<32> *to,Sym<32,_true> *sym,uint st_shndx,bool is_ordinary\n          ,uint orig_st_shndx,Object *object,char *version,bool is_default_version)" identifier (ERROR ">" >) (parameter_list "(Symbol_table *this,Sized_symbol<32> *to,Sym<32,_true> *sym,uint st_shndx,bool is_ordinary\n          ,uint orig_st_shndx,Object *object,char *version,bool is_default_version)" ( (parameter_declaration "Symbol_table *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Sized_symbol<32> *to" type_identifier (ERROR "<32>" < number_literal >) (pointer_declarator "*to" * identifier)) , (parameter_declaration "Sym" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *sym" type_identifier (ERROR ">" >) (pointer_declarator "*sym" * identifier)) , (parameter_declaration "uint st_shndx" type_identifier identifier) , (parameter_declaration "bool is_ordinary" primitive_type identifier) , (parameter_declaration "uint orig_st_shndx" type_identifier identifier) , (parameter_declaration "Object *object" type_identifier (pointer_declarator "*object" * identifier)) , (parameter_declaration "char *version" primitive_type (pointer_declarator "*version" * identifier)) , (parameter_declaration "bool is_default_version" primitive_type identifier) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "Target *pTVar4;" type_identifier (pointer_declarator "*pTVar4" * identifier) ;) (declaration "Object *pOVar5;" type_identifier (pointer_declarator "*pOVar5" * identifier) ;) (expression_statement "Sym_data<32> *pSVar6;" (update_expression "Sym_data<32> *pSVar6" (binary_expression "Sym_data<32> *pSVar6" (binary_expression "Sym_data<32" identifier < number_literal) > (pointer_expression "*pSVar6" * identifier)) --) ;) (declaration "Output_segment *pOVar7;" type_identifier (pointer_declarator "*pOVar7" * identifier) ;) (declaration "_Hash_node_base *p_Var8;" type_identifier (pointer_declarator "*p_Var8" * identifier) ;) (declaration "pointer ppOVar9;" type_identifier identifier ;) (declaration "anon_union_4_3_b0f6f408_for_u1_ aVar10;" type_identifier identifier ;) (declaration "char cVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "General_options *pGVar15;" type_identifier (pointer_declarator "*pGVar15" * identifier) ;) (declaration "STT SVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "STT SVar19;" type_identifier identifier ;) (declaration "Symbol_table *pSVar20;" type_identifier (pointer_declarator "*pSVar20" * identifier) ;) (declaration "Symbol_table *pSVar21;" type_identifier (pointer_declarator "*pSVar21" * identifier) ;) (declaration "bool *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "bool *local_70;" primitive_type (pointer_declarator "*local_70" * identifier) ;) (declaration "byte local_64;" type_identifier identifier ;) (declaration "undefined1 local_54 [12];" type_identifier (array_declarator "local_54 [12]" identifier [ number_literal ]) ;) (declaration "__node_gen_type __node_gen;" type_identifier identifier ;) (declaration "bool adjust_common_sizes;" primitive_type identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "__bucket_type local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "bool adjust_dyndef;" primitive_type identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "_func_int_varargs **local_2c;" type_identifier (pointer_declarator "**local_2c" * (pointer_declarator "*local_2c" * identifier)) ;) (declaration "_Alloc_hider local_28;" type_identifier identifier ;) (if_statement "if (((to->super_Symbol).field_0x2a & 7) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx");\n  }" if (parenthesized_expression "(((to->super_Symbol).field_0x2a & 7) != 0)" ( (binary_expression "((to->super_Symbol).field_0x2a & 7) != 0" (parenthesized_expression "((to->super_Symbol).field_0x2a & 7)" ( (binary_expression "(to->super_Symbol).field_0x2a & 7" (field_expression "(to->super_Symbol).field_0x2a" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx");" (call_expression "do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx")" identifier (argument_list "("../../gold/symtab.h",0xaa,"shndx")" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""shndx"" " string_content ") ))) ;) })) (expression_statement "local_64 = (byte)(to->super_Symbol).field_0x2b >> 5 & 1;" (assignment_expression "local_64 = (byte)(to->super_Symbol).field_0x2b >> 5 & 1" identifier = (binary_expression "(byte)(to->super_Symbol).field_0x2b >> 5 & 1" (binary_expression "(byte)(to->super_Symbol).field_0x2b >> 5" (field_expression "(byte)(to->super_Symbol).field_0x2b" (call_expression "(byte)(to->super_Symbol)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) ))) . field_identifier) >> number_literal) & number_literal)) ;) (expression_statement "uVar3 = (to->super_Symbol).u2_.shndx;" (assignment_expression "uVar3 = (to->super_Symbol).u2_.shndx" identifier = (field_expression "(to->super_Symbol).u2_.shndx" (field_expression "(to->super_Symbol).u2_" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (object == (to->super_Symbol).u1_.object) {\n    if (local_64 == 0) {\n      bVar12 = Symbol::is_common_shndx(uVar3);\n      if ((bVar12) || (!is_ordinary)) goto LAB_00165abe;\n    }\n    else if ((uVar3 != 0) && ((is_ordinary && (st_shndx == uVar3)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    if ((st_shndx == 0xfff1 && !is_ordinary) && ((local_64 == 0 && (uVar3 == 0xfff1)))) {\nLAB_00165d65:\n      uVar17 = sym->p_->st_value;\n      if ((uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18) ==\n          to->value_) {\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(object == (to->super_Symbol).u1_.object)" ( (binary_expression "object == (to->super_Symbol).u1_.object" identifier == (field_expression "(to->super_Symbol).u1_.object" (field_expression "(to->super_Symbol).u1_" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n    if (local_64 == 0) {\n      bVar12 = Symbol::is_common_shndx(uVar3);\n      if ((bVar12) || (!is_ordinary)) goto LAB_00165abe;\n    }\n    else if ((uVar3 != 0) && ((is_ordinary && (st_shndx == uVar3)))) goto LAB_00165d65;\n  }" { (if_statement "if (local_64 == 0) {\n      bVar12 = Symbol::is_common_shndx(uVar3);\n      if ((bVar12) || (!is_ordinary)) goto LAB_00165abe;\n    }\n    else if ((uVar3 != 0) && ((is_ordinary && (st_shndx == uVar3)))) goto LAB_00165d65;" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n      bVar12 = Symbol::is_common_shndx(uVar3);\n      if ((bVar12) || (!is_ordinary)) goto LAB_00165abe;\n    }" { (ERROR "bVar12 = Symbol::" (assignment_expression "bVar12 = Symbol" identifier = identifier) : :) (expression_statement "is_common_shndx(uVar3);" (call_expression "is_common_shndx(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if ((bVar12) || (!is_ordinary)) goto LAB_00165abe;" if (parenthesized_expression "((bVar12) || (!is_ordinary))" ( (binary_expression "(bVar12) || (!is_ordinary)" (parenthesized_expression "(bVar12)" ( identifier )) || (parenthesized_expression "(!is_ordinary)" ( (unary_expression "!is_ordinary" ! identifier) ))) )) (goto_statement "goto LAB_00165abe;" goto statement_identifier ;)) }) (else_clause "else if ((uVar3 != 0) && ((is_ordinary && (st_shndx == uVar3)))) goto LAB_00165d65;" else (if_statement "if ((uVar3 != 0) && ((is_ordinary && (st_shndx == uVar3)))) goto LAB_00165d65;" if (parenthesized_expression "((uVar3 != 0) && ((is_ordinary && (st_shndx == uVar3))))" ( (binary_expression "(uVar3 != 0) && ((is_ordinary && (st_shndx == uVar3)))" (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "((is_ordinary && (st_shndx == uVar3)))" ( (parenthesized_expression "(is_ordinary && (st_shndx == uVar3))" ( (binary_expression "is_ordinary && (st_shndx == uVar3)" identifier && (parenthesized_expression "(st_shndx == uVar3)" ( (binary_expression "st_shndx == uVar3" identifier == identifier) ))) )) ))) )) (goto_statement "goto LAB_00165d65;" goto statement_identifier ;)))) }) (else_clause "else {\nLAB_00165abe:\n    if ((st_shndx == 0xfff1 && !is_ordinary) && ((local_64 == 0 && (uVar3 == 0xfff1)))) {\nLAB_00165d65:\n      uVar17 = sym->p_->st_value;\n      if ((uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18) ==\n          to->value_) {\n        return;\n      }\n    }\n  }" else (compound_statement "{\nLAB_00165abe:\n    if ((st_shndx == 0xfff1 && !is_ordinary) && ((local_64 == 0 && (uVar3 == 0xfff1)))) {\nLAB_00165d65:\n      uVar17 = sym->p_->st_value;\n      if ((uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18) ==\n          to->value_) {\n        return;\n      }\n    }\n  }" { (labeled_statement "LAB_00165abe:\n    if ((st_shndx == 0xfff1 && !is_ordinary) && ((local_64 == 0 && (uVar3 == 0xfff1)))) {\nLAB_00165d65:\n      uVar17 = sym->p_->st_value;\n      if ((uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18) ==\n          to->value_) {\n        return;\n      }\n    }" statement_identifier : (if_statement "if ((st_shndx == 0xfff1 && !is_ordinary) && ((local_64 == 0 && (uVar3 == 0xfff1)))) {\nLAB_00165d65:\n      uVar17 = sym->p_->st_value;\n      if ((uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18) ==\n          to->value_) {\n        return;\n      }\n    }" if (parenthesized_expression "((st_shndx == 0xfff1 && !is_ordinary) && ((local_64 == 0 && (uVar3 == 0xfff1))))" ( (binary_expression "(st_shndx == 0xfff1 && !is_ordinary) && ((local_64 == 0 && (uVar3 == 0xfff1)))" (parenthesized_expression "(st_shndx == 0xfff1 && !is_ordinary)" ( (binary_expression "st_shndx == 0xfff1 && !is_ordinary" (binary_expression "st_shndx == 0xfff1" identifier == number_literal) && (unary_expression "!is_ordinary" ! identifier)) )) && (parenthesized_expression "((local_64 == 0 && (uVar3 == 0xfff1)))" ( (parenthesized_expression "(local_64 == 0 && (uVar3 == 0xfff1))" ( (binary_expression "local_64 == 0 && (uVar3 == 0xfff1)" (binary_expression "local_64 == 0" identifier == number_literal) && (parenthesized_expression "(uVar3 == 0xfff1)" ( (binary_expression "uVar3 == 0xfff1" identifier == number_literal) ))) )) ))) )) (compound_statement "{\nLAB_00165d65:\n      uVar17 = sym->p_->st_value;\n      if ((uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18) ==\n          to->value_) {\n        return;\n      }\n    }" { (labeled_statement "LAB_00165d65:\n      uVar17 = sym->p_->st_value;" statement_identifier : (expression_statement "uVar17 = sym->p_->st_value;" (assignment_expression "uVar17 = sym->p_->st_value" identifier = (field_expression "sym->p_->st_value" (field_expression "sym->p_" identifier -> field_identifier) -> field_identifier)) ;)) (if_statement "if ((uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18) ==\n          to->value_) {\n        return;\n      }" if (parenthesized_expression "((uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18) ==\n          to->value_)" ( (binary_expression "(uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18) ==\n          to->value_" (parenthesized_expression "(uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18)" ( (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8" (binary_expression "uVar17 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar17 & 0xff0000) >> 8" (parenthesized_expression "(uVar17 & 0xff0000)" ( (binary_expression "uVar17 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar17 & 0xff00) << 8" (parenthesized_expression "(uVar17 & 0xff00)" ( (binary_expression "uVar17 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar17 << 0x18" identifier << number_literal)) )) == (field_expression "to->value_" identifier -> field_identifier)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) }))) }))) (expression_statement "pTVar4 = parameters->target_;" (assignment_expression "pTVar4 = parameters->target_" identifier = (field_expression "parameters->target_" identifier -> field_identifier)) ;) (if_statement "if (pTVar4 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }" if (parenthesized_expression "(pTVar4 == (Target *)0x0)" ( (binary_expression "pTVar4 == (Target *)0x0" identifier == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (if_statement "if ((*(char *)(*(int *)(pTVar4 + 4) + 0xd) == '\0') ||\n     (cVar11 = (**(code **)(*(int *)pTVar4 + 0xa4))(pTVar4,to,sym,object,version), cVar11 == '\0'))\n  {\n    if ((object->field_0x2c & 1) == 0) {\n      if (((sym->p_->st_info & 0xf) == 5) &&\n         ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n        if (((to->super_Symbol).field_0x2a & 7) == 0) {\n          ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n          Symbol::demangled_name(&to->super_Symbol);\n          aVar10 = _adjust_dyndef;\n          pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section");\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n          gold_warning(pcVar18,aVar10.object,ppOVar9);\n          if (_adjust_dyndef == (Object *)&local_2c) {\n            return;\n          }\n          operator_delete(_adjust_dyndef);\n          return;\n        }\n        goto LAB_001661e5;\n      }\n      puVar1 = &(to->super_Symbol).field_0x2a;\n      *puVar1 = *puVar1 | 0x80;\n      iVar14 = (*object->_vptr_Object[5])(object);\n    }\n    else {\n      if ((st_shndx == 0) && (((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2)) {\n        return;\n      }\n      puVar1 = &(to->super_Symbol).field_0x2b;\n      *puVar1 = *puVar1 | 1;\n      iVar14 = (*object->_vptr_Object[5])(object);\n    }\n    if ((iVar14 == 0) && ((object->field_0x2c & 1) == 0)) {\n      puVar1 = &(to->super_Symbol).field_0x2b;\n      *puVar1 = *puVar1 | 0x40;\n    }\n    if ((((to->super_Symbol).field_0x2a & 7) == 0) &&\n       (pOVar5 = (to->super_Symbol).u1_.object, iVar14 = (*pOVar5->_vptr_Object[5])(pOVar5),\n       iVar14 != 0)) {\n      pGVar15 = parameters->options_;\n      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;\n      if (pGVar15->plugins_->in_replacement_phase_ != false) {\n        if ((((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)) ||\n           ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n          override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n          return;\n        }\n        uVar3 = to->symsize_;\n        uVar17 = to->value_;\n        override<32,_true>(this,to,sym,st_shndx,false,object,version);\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (uVar17 <= to->value_) {\n          return;\n        }\n        to->value_ = uVar17;\n        return;\n      }\n    }\n    else {\n      pGVar15 = parameters->options_;\n      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;\n    }\n    if ((pGVar15->detect_odr_violations_).value != false) {\n      pSVar6 = sym->p_;\n      if ((((int)(uint)pSVar6->st_info >> 4 == 2) || ((byte)(to->super_Symbol).field_0x28 >> 4 == 2)\n          ) && (((local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0)))) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (((uVar17 != 0) && (to->symsize_ != 0)) &&\n           ((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)))) {\n          p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_;\n          if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {\n            uVar17 = pSVar6->st_value;\n            _adjust_common_sizes = object;\n            local_38 = 0;\n            local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);\n            local_40 = orig_st_shndx;\n            if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }\n            _adjust_dyndef = (to->super_Symbol).u1_;\n            local_28._M_p = (pointer)0x0;\n            local_2c = (_func_int_varargs **)to->value_;\n            pSVar20 = this;\n            pSVar21 = this;\n            local_54._8_4_ = p_Var8;\n            local_30 = uVar3;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);\n            local_54._8_4_ = (to->super_Symbol).name_;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);\n          }\n        }\n      }\n    }\n    local_70 = &adjust_common_sizes;\n    local_74 = &adjust_dyndef;\n    iVar14 = (*object->_vptr_Object[5])(object);\n    if (iVar14 == 0) {\n      SVar16 = (STT)sym->p_->st_info;\n      SVar19 = SVar16;\n    }\n    else {\n      SVar16 = (STT)sym->p_->st_info;\n      SVar19 = (uint)(byte)(to->super_Symbol).field_0x28;\n    }\n    uVar17 = symbol_to_bits((int)SVar16 >> 4,(bool)(object->field_0x2c & 1),st_shndx,is_ordinary);\n    uVar3 = to->symsize_;\n    bVar12 = should_override(&to->super_Symbol,uVar17,SVar19 & STT_HIPROC,OBJECT,object,local_70,\n                             local_74,is_default_version);\n    if (bVar12) {\n      bVar13 = (to->super_Symbol).field_0x28;\n      uVar17 = to->value_;\n      override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n      if (adjust_common_sizes != false) {\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }\n      if ((adjust_dyndef != false) &&\n         ((bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0)))) {\n        (to->super_Symbol).field_0x2c =\n             (to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    else {\n      pSVar6 = sym->p_;\n      if (adjust_common_sizes != false) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar3 < uVar17) {\n          to->symsize_ = uVar17;\n        }\n        uVar17 = pSVar6->st_value;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }\n      if (adjust_dyndef != false) {\n        bVar13 = (to->super_Symbol).field_0x2c;\n        if (((bVar13 & 1) == 0) || ((bVar13 & 2) != 0)) {\n          (to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;\n        }\n      }\n      bVar13 = pSVar6->st_other & 3;\n      if ((pSVar6->st_other & 3) != 0) {\n        bVar2 = (to->super_Symbol).field_0x29;\n        if (((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3))) {\n          (to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;\n        }\n      }\n    }\n    bVar13 = (to->super_Symbol).field_0x2a;\n    if ((bVar13 & 7) == 0) {\n      pOVar7 = (to->super_Symbol).u1_.output_segment;\n      bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      if ((((bVar2 & 1) != 0) && ((char)bVar13 < '\0')) &&\n         (((to->super_Symbol).field_0x2c & 2) == 0)) {\n        *(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_end_of_storage = bVar2 | 2;\n      }\n    }\n    if (adjust_common_sizes != false) {\n      if (parameters->options_ == (General_options *)0x0) {\nLAB_00165d90:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\n      if ((parameters->options_->warn_common_).value != false) {\n        uVar17 = sym->p_->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar17 < uVar3) {\n          pcVar18 = "common of \'%s\' overriding smaller common";\n        }\n        else if (uVar3 < uVar17) {\n          pcVar18 = "common of \'%s\' overidden by larger common";\n        }\n        else {\n          pcVar18 = "multiple common of \'%s\'";\n        }\n        pcVar18 = (char *)gettext(pcVar18);\n        report_resolve_problem(false,pcVar18,&to->super_Symbol,OBJECT,object);\n      }\n    }\n  }" if (parenthesized_expression "((*(char *)(*(int *)(pTVar4 + 4) + 0xd) == '\0') ||\n     (cVar11 = (**(code **)(*(int *)pTVar4 + 0xa4))(pTVar4,to,sym,object,version), cVar11 == '\0'))" ( (binary_expression "(*(char *)(*(int *)(pTVar4 + 4) + 0xd) == '\0') ||\n     (cVar11 = (**(code **)(*(int *)pTVar4 + 0xa4))(pTVar4,to,sym,object,version), cVar11 == '\0')" (parenthesized_expression "(*(char *)(*(int *)(pTVar4 + 4) + 0xd) == '\0')" ( (binary_expression "*(char *)(*(int *)(pTVar4 + 4) + 0xd) == '\0'" (pointer_expression "*(char *)(*(int *)(pTVar4 + 4) + 0xd)" * (cast_expression "(char *)(*(int *)(pTVar4 + 4) + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pTVar4 + 4) + 0xd)" ( (binary_expression "*(int *)(pTVar4 + 4) + 0xd" (pointer_expression "*(int *)(pTVar4 + 4)" * (cast_expression "(int *)(pTVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pTVar4 + 4)" ( (binary_expression "pTVar4 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(cVar11 = (**(code **)(*(int *)pTVar4 + 0xa4))(pTVar4,to,sym,object,version), cVar11 == '\0')" ( (comma_expression "cVar11 = (**(code **)(*(int *)pTVar4 + 0xa4))(pTVar4,to,sym,object,version), cVar11 == '\0'" (assignment_expression "cVar11 = (**(code **)(*(int *)pTVar4 + 0xa4))(pTVar4,to,sym,object,version)" identifier = (call_expression "(**(code **)(*(int *)pTVar4 + 0xa4))(pTVar4,to,sym,object,version)" (parenthesized_expression "(**(code **)(*(int *)pTVar4 + 0xa4))" ( (pointer_expression "**(code **)(*(int *)pTVar4 + 0xa4)" * (pointer_expression "*(code **)(*(int *)pTVar4 + 0xa4)" * (cast_expression "(code **)(*(int *)pTVar4 + 0xa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pTVar4 + 0xa4)" ( (binary_expression "*(int *)pTVar4 + 0xa4" (pointer_expression "*(int *)pTVar4" * (cast_expression "(int *)pTVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pTVar4,to,sym,object,version)" ( identifier , identifier , identifier , identifier , identifier )))) , (binary_expression "cVar11 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    if ((object->field_0x2c & 1) == 0) {\n      if (((sym->p_->st_info & 0xf) == 5) &&\n         ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n        if (((to->super_Symbol).field_0x2a & 7) == 0) {\n          ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n          Symbol::demangled_name(&to->super_Symbol);\n          aVar10 = _adjust_dyndef;\n          pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section");\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n          gold_warning(pcVar18,aVar10.object,ppOVar9);\n          if (_adjust_dyndef == (Object *)&local_2c) {\n            return;\n          }\n          operator_delete(_adjust_dyndef);\n          return;\n        }\n        goto LAB_001661e5;\n      }\n      puVar1 = &(to->super_Symbol).field_0x2a;\n      *puVar1 = *puVar1 | 0x80;\n      iVar14 = (*object->_vptr_Object[5])(object);\n    }\n    else {\n      if ((st_shndx == 0) && (((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2)) {\n        return;\n      }\n      puVar1 = &(to->super_Symbol).field_0x2b;\n      *puVar1 = *puVar1 | 1;\n      iVar14 = (*object->_vptr_Object[5])(object);\n    }\n    if ((iVar14 == 0) && ((object->field_0x2c & 1) == 0)) {\n      puVar1 = &(to->super_Symbol).field_0x2b;\n      *puVar1 = *puVar1 | 0x40;\n    }\n    if ((((to->super_Symbol).field_0x2a & 7) == 0) &&\n       (pOVar5 = (to->super_Symbol).u1_.object, iVar14 = (*pOVar5->_vptr_Object[5])(pOVar5),\n       iVar14 != 0)) {\n      pGVar15 = parameters->options_;\n      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;\n      if (pGVar15->plugins_->in_replacement_phase_ != false) {\n        if ((((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)) ||\n           ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n          override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n          return;\n        }\n        uVar3 = to->symsize_;\n        uVar17 = to->value_;\n        override<32,_true>(this,to,sym,st_shndx,false,object,version);\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (uVar17 <= to->value_) {\n          return;\n        }\n        to->value_ = uVar17;\n        return;\n      }\n    }\n    else {\n      pGVar15 = parameters->options_;\n      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;\n    }\n    if ((pGVar15->detect_odr_violations_).value != false) {\n      pSVar6 = sym->p_;\n      if ((((int)(uint)pSVar6->st_info >> 4 == 2) || ((byte)(to->super_Symbol).field_0x28 >> 4 == 2)\n          ) && (((local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0)))) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (((uVar17 != 0) && (to->symsize_ != 0)) &&\n           ((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)))) {\n          p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_;\n          if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {\n            uVar17 = pSVar6->st_value;\n            _adjust_common_sizes = object;\n            local_38 = 0;\n            local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);\n            local_40 = orig_st_shndx;\n            if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }\n            _adjust_dyndef = (to->super_Symbol).u1_;\n            local_28._M_p = (pointer)0x0;\n            local_2c = (_func_int_varargs **)to->value_;\n            pSVar20 = this;\n            pSVar21 = this;\n            local_54._8_4_ = p_Var8;\n            local_30 = uVar3;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);\n            local_54._8_4_ = (to->super_Symbol).name_;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);\n          }\n        }\n      }\n    }\n    local_70 = &adjust_common_sizes;\n    local_74 = &adjust_dyndef;\n    iVar14 = (*object->_vptr_Object[5])(object);\n    if (iVar14 == 0) {\n      SVar16 = (STT)sym->p_->st_info;\n      SVar19 = SVar16;\n    }\n    else {\n      SVar16 = (STT)sym->p_->st_info;\n      SVar19 = (uint)(byte)(to->super_Symbol).field_0x28;\n    }\n    uVar17 = symbol_to_bits((int)SVar16 >> 4,(bool)(object->field_0x2c & 1),st_shndx,is_ordinary);\n    uVar3 = to->symsize_;\n    bVar12 = should_override(&to->super_Symbol,uVar17,SVar19 & STT_HIPROC,OBJECT,object,local_70,\n                             local_74,is_default_version);\n    if (bVar12) {\n      bVar13 = (to->super_Symbol).field_0x28;\n      uVar17 = to->value_;\n      override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n      if (adjust_common_sizes != false) {\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }\n      if ((adjust_dyndef != false) &&\n         ((bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0)))) {\n        (to->super_Symbol).field_0x2c =\n             (to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    else {\n      pSVar6 = sym->p_;\n      if (adjust_common_sizes != false) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar3 < uVar17) {\n          to->symsize_ = uVar17;\n        }\n        uVar17 = pSVar6->st_value;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }\n      if (adjust_dyndef != false) {\n        bVar13 = (to->super_Symbol).field_0x2c;\n        if (((bVar13 & 1) == 0) || ((bVar13 & 2) != 0)) {\n          (to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;\n        }\n      }\n      bVar13 = pSVar6->st_other & 3;\n      if ((pSVar6->st_other & 3) != 0) {\n        bVar2 = (to->super_Symbol).field_0x29;\n        if (((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3))) {\n          (to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;\n        }\n      }\n    }\n    bVar13 = (to->super_Symbol).field_0x2a;\n    if ((bVar13 & 7) == 0) {\n      pOVar7 = (to->super_Symbol).u1_.output_segment;\n      bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      if ((((bVar2 & 1) != 0) && ((char)bVar13 < '\0')) &&\n         (((to->super_Symbol).field_0x2c & 2) == 0)) {\n        *(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_end_of_storage = bVar2 | 2;\n      }\n    }\n    if (adjust_common_sizes != false) {\n      if (parameters->options_ == (General_options *)0x0) {\nLAB_00165d90:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\n      if ((parameters->options_->warn_common_).value != false) {\n        uVar17 = sym->p_->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar17 < uVar3) {\n          pcVar18 = "common of \'%s\' overriding smaller common";\n        }\n        else if (uVar3 < uVar17) {\n          pcVar18 = "common of \'%s\' overidden by larger common";\n        }\n        else {\n          pcVar18 = "multiple common of \'%s\'";\n        }\n        pcVar18 = (char *)gettext(pcVar18);\n        report_resolve_problem(false,pcVar18,&to->super_Symbol,OBJECT,object);\n      }\n    }\n  }" { (if_statement "if ((object->field_0x2c & 1) == 0) {\n      if (((sym->p_->st_info & 0xf) == 5) &&\n         ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n        if (((to->super_Symbol).field_0x2a & 7) == 0) {\n          ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n          Symbol::demangled_name(&to->super_Symbol);\n          aVar10 = _adjust_dyndef;\n          pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section");\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n          gold_warning(pcVar18,aVar10.object,ppOVar9);\n          if (_adjust_dyndef == (Object *)&local_2c) {\n            return;\n          }\n          operator_delete(_adjust_dyndef);\n          return;\n        }\n        goto LAB_001661e5;\n      }\n      puVar1 = &(to->super_Symbol).field_0x2a;\n      *puVar1 = *puVar1 | 0x80;\n      iVar14 = (*object->_vptr_Object[5])(object);\n    }\n    else {\n      if ((st_shndx == 0) && (((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2)) {\n        return;\n      }\n      puVar1 = &(to->super_Symbol).field_0x2b;\n      *puVar1 = *puVar1 | 1;\n      iVar14 = (*object->_vptr_Object[5])(object);\n    }" if (parenthesized_expression "((object->field_0x2c & 1) == 0)" ( (binary_expression "(object->field_0x2c & 1) == 0" (parenthesized_expression "(object->field_0x2c & 1)" ( (binary_expression "object->field_0x2c & 1" (field_expression "object->field_0x2c" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (((sym->p_->st_info & 0xf) == 5) &&\n         ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n        if (((to->super_Symbol).field_0x2a & 7) == 0) {\n          ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n          Symbol::demangled_name(&to->super_Symbol);\n          aVar10 = _adjust_dyndef;\n          pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section");\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n          gold_warning(pcVar18,aVar10.object,ppOVar9);\n          if (_adjust_dyndef == (Object *)&local_2c) {\n            return;\n          }\n          operator_delete(_adjust_dyndef);\n          return;\n        }\n        goto LAB_001661e5;\n      }\n      puVar1 = &(to->super_Symbol).field_0x2a;\n      *puVar1 = *puVar1 | 0x80;\n      iVar14 = (*object->_vptr_Object[5])(object);\n    }" { (if_statement "if (((sym->p_->st_info & 0xf) == 5) &&\n         ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n        if (((to->super_Symbol).field_0x2a & 7) == 0) {\n          ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n          Symbol::demangled_name(&to->super_Symbol);\n          aVar10 = _adjust_dyndef;\n          pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section");\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n          gold_warning(pcVar18,aVar10.object,ppOVar9);\n          if (_adjust_dyndef == (Object *)&local_2c) {\n            return;\n          }\n          operator_delete(_adjust_dyndef);\n          return;\n        }\n        goto LAB_001661e5;\n      }" if (parenthesized_expression "(((sym->p_->st_info & 0xf) == 5) &&\n         ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12))))" ( (binary_expression "((sym->p_->st_info & 0xf) == 5) &&\n         ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))" (parenthesized_expression "((sym->p_->st_info & 0xf) == 5)" ( (binary_expression "(sym->p_->st_info & 0xf) == 5" (parenthesized_expression "(sym->p_->st_info & 0xf)" ( (binary_expression "sym->p_->st_info & 0xf" (field_expression "sym->p_->st_info" (field_expression "sym->p_" identifier -> field_identifier) -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))" ( (parenthesized_expression "(is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12))" ( (binary_expression "is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)" identifier || (parenthesized_expression "(bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)" ( (ERROR "bVar12 = Symbol::" (assignment_expression "bVar12 = Symbol" identifier = identifier) : :) (comma_expression "is_common_shndx(st_shndx), !bVar12" (call_expression "is_common_shndx(st_shndx)" identifier (argument_list "(st_shndx)" ( identifier ))) , (unary_expression "!bVar12" ! identifier)) ))) )) ))) )) (compound_statement "{\n        if (((to->super_Symbol).field_0x2a & 7) == 0) {\n          ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n          Symbol::demangled_name(&to->super_Symbol);\n          aVar10 = _adjust_dyndef;\n          pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section");\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n          gold_warning(pcVar18,aVar10.object,ppOVar9);\n          if (_adjust_dyndef == (Object *)&local_2c) {\n            return;\n          }\n          operator_delete(_adjust_dyndef);\n          return;\n        }\n        goto LAB_001661e5;\n      }" { (if_statement "if (((to->super_Symbol).field_0x2a & 7) == 0) {\n          ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n          Symbol::demangled_name(&to->super_Symbol);\n          aVar10 = _adjust_dyndef;\n          pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section");\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n          gold_warning(pcVar18,aVar10.object,ppOVar9);\n          if (_adjust_dyndef == (Object *)&local_2c) {\n            return;\n          }\n          operator_delete(_adjust_dyndef);\n          return;\n        }" if (parenthesized_expression "(((to->super_Symbol).field_0x2a & 7) == 0)" ( (binary_expression "((to->super_Symbol).field_0x2a & 7) == 0" (parenthesized_expression "((to->super_Symbol).field_0x2a & 7)" ( (binary_expression "(to->super_Symbol).field_0x2a & 7" (field_expression "(to->super_Symbol).field_0x2a" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n          Symbol::demangled_name(&to->super_Symbol);\n          aVar10 = _adjust_dyndef;\n          pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section");\n                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */\n          gold_warning(pcVar18,aVar10.object,ppOVar9);\n          if (_adjust_dyndef == (Object *)&local_2c) {\n            return;\n          }\n          operator_delete(_adjust_dyndef);\n          return;\n        }" { (expression_statement "ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;" (field_expression "ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish" (field_expression "ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl" (binary_expression "ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std" (assignment_expression "ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold" identifier = (binary_expression "((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base<gold" (field_expression "((to->super_Symbol).u1_.output_segment)->output_lists_[0].\n                    super__Vector_base" (subscript_expression "((to->super_Symbol).u1_.output_segment)->output_lists_[0]" (field_expression "((to->super_Symbol).u1_.output_segment)->output_lists_" (parenthesized_expression "((to->super_Symbol).u1_.output_segment)" ( (field_expression "(to->super_Symbol).u1_.output_segment" (field_expression "(to->super_Symbol).u1_" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) )) -> field_identifier) [ number_literal ]) . field_identifier) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (labeled_statement "Symbol::demangled_name(&to->super_Symbol);" statement_identifier : (ERROR ":" :) (expression_statement "demangled_name(&to->super_Symbol);" (call_expression "demangled_name(&to->super_Symbol)" identifier (argument_list "(&to->super_Symbol)" ( (pointer_expression "&to->super_Symbol" & (field_expression "to->super_Symbol" identifier -> field_identifier)) ))) ;)) (expression_statement "aVar10 = _adjust_dyndef;" (assignment_expression "aVar10 = _adjust_dyndef" identifier = identifier) ;) (expression_statement "pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section");" (assignment_expression "pcVar18 = (char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section")" identifier = (cast_expression "(char *)gettext("STT_COMMON symbol \'%s\' in %s is not in a common section")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("STT_COMMON symbol \'%s\' in %s is not in a common section")" identifier (argument_list "("STT_COMMON symbol \'%s\' in %s is not in a common section")" ( (string_literal ""STT_COMMON symbol \'%s\' in %s is not in a common section"" " string_content escape_sequence string_content escape_sequence string_content ") ))))) ;) comment (expression_statement "gold_warning(pcVar18,aVar10.object,ppOVar9);" (call_expression "gold_warning(pcVar18,aVar10.object,ppOVar9)" identifier (argument_list "(pcVar18,aVar10.object,ppOVar9)" ( identifier , (field_expression "aVar10.object" identifier . field_identifier) , identifier ))) ;) (if_statement "if (_adjust_dyndef == (Object *)&local_2c) {\n            return;\n          }" if (parenthesized_expression "(_adjust_dyndef == (Object *)&local_2c)" ( (binary_expression "_adjust_dyndef == (Object *)&local_2c" identifier == (cast_expression "(Object *)&local_2c" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_2c" & identifier))) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "operator_delete(_adjust_dyndef);" (call_expression "operator_delete(_adjust_dyndef)" identifier (argument_list "(_adjust_dyndef)" ( identifier ))) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_001661e5;" goto statement_identifier ;) })) (expression_statement "puVar1 = &(to->super_Symbol).field_0x2a;" (assignment_expression "puVar1 = &(to->super_Symbol).field_0x2a" identifier = (pointer_expression "&(to->super_Symbol).field_0x2a" & (field_expression "(to->super_Symbol).field_0x2a" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | 0x80;" (assignment_expression "*puVar1 = *puVar1 | 0x80" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 0x80" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "iVar14 = (*object->_vptr_Object[5])(object);" (assignment_expression "iVar14 = (*object->_vptr_Object[5])(object)" identifier = (call_expression "(*object->_vptr_Object[5])(object)" (parenthesized_expression "(*object->_vptr_Object[5])" ( (pointer_expression "*object->_vptr_Object[5]" * (subscript_expression "object->_vptr_Object[5]" (field_expression "object->_vptr_Object" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(object)" ( identifier )))) ;) }) (else_clause "else {\n      if ((st_shndx == 0) && (((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2)) {\n        return;\n      }\n      puVar1 = &(to->super_Symbol).field_0x2b;\n      *puVar1 = *puVar1 | 1;\n      iVar14 = (*object->_vptr_Object[5])(object);\n    }" else (compound_statement "{\n      if ((st_shndx == 0) && (((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2)) {\n        return;\n      }\n      puVar1 = &(to->super_Symbol).field_0x2b;\n      *puVar1 = *puVar1 | 1;\n      iVar14 = (*object->_vptr_Object[5])(object);\n    }" { (if_statement "if ((st_shndx == 0) && (((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2)) {\n        return;\n      }" if (parenthesized_expression "((st_shndx == 0) && (((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2))" ( (binary_expression "(st_shndx == 0) && (((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2)" (parenthesized_expression "(st_shndx == 0)" ( (binary_expression "st_shndx == 0" identifier == number_literal) )) && (parenthesized_expression "(((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2)" ( (binary_expression "((byte)(to->super_Symbol).field_0x29 & 3) - 1 < 2" (binary_expression "((byte)(to->super_Symbol).field_0x29 & 3) - 1" (parenthesized_expression "((byte)(to->super_Symbol).field_0x29 & 3)" ( (binary_expression "(byte)(to->super_Symbol).field_0x29 & 3" (field_expression "(byte)(to->super_Symbol).field_0x29" (call_expression "(byte)(to->super_Symbol)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) ))) . field_identifier) & number_literal) )) - number_literal) < number_literal) ))) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "puVar1 = &(to->super_Symbol).field_0x2b;" (assignment_expression "puVar1 = &(to->super_Symbol).field_0x2b" identifier = (pointer_expression "&(to->super_Symbol).field_0x2b" & (field_expression "(to->super_Symbol).field_0x2b" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | 1;" (assignment_expression "*puVar1 = *puVar1 | 1" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 1" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "iVar14 = (*object->_vptr_Object[5])(object);" (assignment_expression "iVar14 = (*object->_vptr_Object[5])(object)" identifier = (call_expression "(*object->_vptr_Object[5])(object)" (parenthesized_expression "(*object->_vptr_Object[5])" ( (pointer_expression "*object->_vptr_Object[5]" * (subscript_expression "object->_vptr_Object[5]" (field_expression "object->_vptr_Object" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(object)" ( identifier )))) ;) }))) (if_statement "if ((iVar14 == 0) && ((object->field_0x2c & 1) == 0)) {\n      puVar1 = &(to->super_Symbol).field_0x2b;\n      *puVar1 = *puVar1 | 0x40;\n    }" if (parenthesized_expression "((iVar14 == 0) && ((object->field_0x2c & 1) == 0))" ( (binary_expression "(iVar14 == 0) && ((object->field_0x2c & 1) == 0)" (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) && (parenthesized_expression "((object->field_0x2c & 1) == 0)" ( (binary_expression "(object->field_0x2c & 1) == 0" (parenthesized_expression "(object->field_0x2c & 1)" ( (binary_expression "object->field_0x2c & 1" (field_expression "object->field_0x2c" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      puVar1 = &(to->super_Symbol).field_0x2b;\n      *puVar1 = *puVar1 | 0x40;\n    }" { (expression_statement "puVar1 = &(to->super_Symbol).field_0x2b;" (assignment_expression "puVar1 = &(to->super_Symbol).field_0x2b" identifier = (pointer_expression "&(to->super_Symbol).field_0x2b" & (field_expression "(to->super_Symbol).field_0x2b" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | 0x40;" (assignment_expression "*puVar1 = *puVar1 | 0x40" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 0x40" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) })) (if_statement "if ((((to->super_Symbol).field_0x2a & 7) == 0) &&\n       (pOVar5 = (to->super_Symbol).u1_.object, iVar14 = (*pOVar5->_vptr_Object[5])(pOVar5),\n       iVar14 != 0)) {\n      pGVar15 = parameters->options_;\n      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;\n      if (pGVar15->plugins_->in_replacement_phase_ != false) {\n        if ((((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)) ||\n           ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n          override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n          return;\n        }\n        uVar3 = to->symsize_;\n        uVar17 = to->value_;\n        override<32,_true>(this,to,sym,st_shndx,false,object,version);\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (uVar17 <= to->value_) {\n          return;\n        }\n        to->value_ = uVar17;\n        return;\n      }\n    }\n    else {\n      pGVar15 = parameters->options_;\n      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;\n    }" if (parenthesized_expression "((((to->super_Symbol).field_0x2a & 7) == 0) &&\n       (pOVar5 = (to->super_Symbol).u1_.object, iVar14 = (*pOVar5->_vptr_Object[5])(pOVar5),\n       iVar14 != 0))" ( (binary_expression "(((to->super_Symbol).field_0x2a & 7) == 0) &&\n       (pOVar5 = (to->super_Symbol).u1_.object, iVar14 = (*pOVar5->_vptr_Object[5])(pOVar5),\n       iVar14 != 0)" (parenthesized_expression "(((to->super_Symbol).field_0x2a & 7) == 0)" ( (binary_expression "((to->super_Symbol).field_0x2a & 7) == 0" (parenthesized_expression "((to->super_Symbol).field_0x2a & 7)" ( (binary_expression "(to->super_Symbol).field_0x2a & 7" (field_expression "(to->super_Symbol).field_0x2a" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(pOVar5 = (to->super_Symbol).u1_.object, iVar14 = (*pOVar5->_vptr_Object[5])(pOVar5),\n       iVar14 != 0)" ( (comma_expression "pOVar5 = (to->super_Symbol).u1_.object, iVar14 = (*pOVar5->_vptr_Object[5])(pOVar5),\n       iVar14 != 0" (assignment_expression "pOVar5 = (to->super_Symbol).u1_.object" identifier = (field_expression "(to->super_Symbol).u1_.object" (field_expression "(to->super_Symbol).u1_" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (comma_expression "iVar14 = (*pOVar5->_vptr_Object[5])(pOVar5),\n       iVar14 != 0" (assignment_expression "iVar14 = (*pOVar5->_vptr_Object[5])(pOVar5)" identifier = (call_expression "(*pOVar5->_vptr_Object[5])(pOVar5)" (parenthesized_expression "(*pOVar5->_vptr_Object[5])" ( (pointer_expression "*pOVar5->_vptr_Object[5]" * (subscript_expression "pOVar5->_vptr_Object[5]" (field_expression "pOVar5->_vptr_Object" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pOVar5)" ( identifier )))) , (binary_expression "iVar14 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n      pGVar15 = parameters->options_;\n      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;\n      if (pGVar15->plugins_->in_replacement_phase_ != false) {\n        if ((((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)) ||\n           ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n          override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n          return;\n        }\n        uVar3 = to->symsize_;\n        uVar17 = to->value_;\n        override<32,_true>(this,to,sym,st_shndx,false,object,version);\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (uVar17 <= to->value_) {\n          return;\n        }\n        to->value_ = uVar17;\n        return;\n      }\n    }" { (expression_statement "pGVar15 = parameters->options_;" (assignment_expression "pGVar15 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;" if (parenthesized_expression "(pGVar15 == (General_options *)0x0)" ( (binary_expression "pGVar15 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00165d90;" goto statement_identifier ;)) (if_statement "if (pGVar15->plugins_->in_replacement_phase_ != false) {\n        if ((((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)) ||\n           ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n          override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n          return;\n        }\n        uVar3 = to->symsize_;\n        uVar17 = to->value_;\n        override<32,_true>(this,to,sym,st_shndx,false,object,version);\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (uVar17 <= to->value_) {\n          return;\n        }\n        to->value_ = uVar17;\n        return;\n      }" if (parenthesized_expression "(pGVar15->plugins_->in_replacement_phase_ != false)" ( (binary_expression "pGVar15->plugins_->in_replacement_phase_ != false" (field_expression "pGVar15->plugins_->in_replacement_phase_" (field_expression "pGVar15->plugins_" identifier -> field_identifier) -> field_identifier) != false) )) (compound_statement "{\n        if ((((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)) ||\n           ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n          override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n          return;\n        }\n        uVar3 = to->symsize_;\n        uVar17 = to->value_;\n        override<32,_true>(this,to,sym,st_shndx,false,object,version);\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (uVar17 <= to->value_) {\n          return;\n        }\n        to->value_ = uVar17;\n        return;\n      }" { (if_statement "if ((((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)) ||\n           ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))) {\n          override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n          return;\n        }" if (parenthesized_expression "((((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)) ||\n           ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12))))" ( (binary_expression "(((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)) ||\n           ((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))" (parenthesized_expression "(((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12))" ( (binary_expression "((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||\n            (bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)" (parenthesized_expression "((((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0))" ( (binary_expression "(((to->super_Symbol).field_0x2a & 7) != 0) ||\n             (((to->super_Symbol).field_0x2b & 0x20) != 0)" (parenthesized_expression "(((to->super_Symbol).field_0x2a & 7) != 0)" ( (binary_expression "((to->super_Symbol).field_0x2a & 7) != 0" (parenthesized_expression "((to->super_Symbol).field_0x2a & 7)" ( (binary_expression "(to->super_Symbol).field_0x2a & 7" (field_expression "(to->super_Symbol).field_0x2a" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(((to->super_Symbol).field_0x2b & 0x20) != 0)" ( (binary_expression "((to->super_Symbol).field_0x2b & 0x20) != 0" (parenthesized_expression "((to->super_Symbol).field_0x2b & 0x20)" ( (binary_expression "(to->super_Symbol).field_0x2b & 0x20" (field_expression "(to->super_Symbol).field_0x2b" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(bVar12 = Symbol::is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12)" ( (ERROR "bVar12 = Symbol::" (assignment_expression "bVar12 = Symbol" identifier = identifier) : :) (comma_expression "is_common_shndx((to->super_Symbol).u2_.shndx), !bVar12" (call_expression "is_common_shndx((to->super_Symbol).u2_.shndx)" identifier (argument_list "((to->super_Symbol).u2_.shndx)" ( (field_expression "(to->super_Symbol).u2_.shndx" (field_expression "(to->super_Symbol).u2_" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) , (unary_expression "!bVar12" ! identifier)) ))) )) || (parenthesized_expression "((is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)))" ( (parenthesized_expression "(is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12))" ( (binary_expression "is_ordinary || (bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)" identifier || (parenthesized_expression "(bVar12 = Symbol::is_common_shndx(st_shndx), !bVar12)" ( (ERROR "bVar12 = Symbol::" (assignment_expression "bVar12 = Symbol" identifier = identifier) : :) (comma_expression "is_common_shndx(st_shndx), !bVar12" (call_expression "is_common_shndx(st_shndx)" identifier (argument_list "(st_shndx)" ( identifier ))) , (unary_expression "!bVar12" ! identifier)) ))) )) ))) )) (compound_statement "{\n          override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n          return;\n        }" { (expression_statement "override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);" (comma_expression "override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version)" (binary_expression "override<32" identifier < number_literal) , (binary_expression "_true>(this,to,sym,st_shndx,is_ordinary,object,version)" identifier > (parenthesized_expression "(this,to,sym,st_shndx,is_ordinary,object,version)" ( (comma_expression "this,to,sym,st_shndx,is_ordinary,object,version" identifier , (comma_expression "to,sym,st_shndx,is_ordinary,object,version" identifier , (comma_expression "sym,st_shndx,is_ordinary,object,version" identifier , (comma_expression "st_shndx,is_ordinary,object,version" identifier , (comma_expression "is_ordinary,object,version" identifier , (comma_expression "object,version" identifier , identifier)))))) )))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar3 = to->symsize_;" (assignment_expression "uVar3 = to->symsize_" identifier = (field_expression "to->symsize_" identifier -> field_identifier)) ;) (expression_statement "uVar17 = to->value_;" (assignment_expression "uVar17 = to->value_" identifier = (field_expression "to->value_" identifier -> field_identifier)) ;) (expression_statement "override<32,_true>(this,to,sym,st_shndx,false,object,version);" (comma_expression "override<32,_true>(this,to,sym,st_shndx,false,object,version)" (binary_expression "override<32" identifier < number_literal) , (binary_expression "_true>(this,to,sym,st_shndx,false,object,version)" identifier > (parenthesized_expression "(this,to,sym,st_shndx,false,object,version)" ( (comma_expression "this,to,sym,st_shndx,false,object,version" identifier , (comma_expression "to,sym,st_shndx,false,object,version" identifier , (comma_expression "sym,st_shndx,false,object,version" identifier , (comma_expression "st_shndx,false,object,version" identifier , (comma_expression "false,object,version" false , (comma_expression "object,version" identifier , identifier)))))) )))) ;) (if_statement "if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }" if (parenthesized_expression "(to->symsize_ < uVar3)" ( (binary_expression "to->symsize_ < uVar3" (field_expression "to->symsize_" identifier -> field_identifier) < identifier) )) (compound_statement "{\n          to->symsize_ = uVar3;\n        }" { (expression_statement "to->symsize_ = uVar3;" (assignment_expression "to->symsize_ = uVar3" (field_expression "to->symsize_" identifier -> field_identifier) = identifier) ;) })) (if_statement "if (uVar17 <= to->value_) {\n          return;\n        }" if (parenthesized_expression "(uVar17 <= to->value_)" ( (binary_expression "uVar17 <= to->value_" identifier <= (field_expression "to->value_" identifier -> field_identifier)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "to->value_ = uVar17;" (assignment_expression "to->value_ = uVar17" (field_expression "to->value_" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n      pGVar15 = parameters->options_;\n      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;\n    }" else (compound_statement "{\n      pGVar15 = parameters->options_;\n      if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;\n    }" { (expression_statement "pGVar15 = parameters->options_;" (assignment_expression "pGVar15 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar15 == (General_options *)0x0) goto LAB_00165d90;" if (parenthesized_expression "(pGVar15 == (General_options *)0x0)" ( (binary_expression "pGVar15 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00165d90;" goto statement_identifier ;)) }))) (if_statement "if ((pGVar15->detect_odr_violations_).value != false) {\n      pSVar6 = sym->p_;\n      if ((((int)(uint)pSVar6->st_info >> 4 == 2) || ((byte)(to->super_Symbol).field_0x28 >> 4 == 2)\n          ) && (((local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0)))) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (((uVar17 != 0) && (to->symsize_ != 0)) &&\n           ((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)))) {\n          p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_;\n          if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {\n            uVar17 = pSVar6->st_value;\n            _adjust_common_sizes = object;\n            local_38 = 0;\n            local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);\n            local_40 = orig_st_shndx;\n            if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }\n            _adjust_dyndef = (to->super_Symbol).u1_;\n            local_28._M_p = (pointer)0x0;\n            local_2c = (_func_int_varargs **)to->value_;\n            pSVar20 = this;\n            pSVar21 = this;\n            local_54._8_4_ = p_Var8;\n            local_30 = uVar3;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);\n            local_54._8_4_ = (to->super_Symbol).name_;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);\n          }\n        }\n      }\n    }" if (parenthesized_expression "((pGVar15->detect_odr_violations_).value != false)" ( (binary_expression "(pGVar15->detect_odr_violations_).value != false" (field_expression "(pGVar15->detect_odr_violations_).value" (parenthesized_expression "(pGVar15->detect_odr_violations_)" ( (field_expression "pGVar15->detect_odr_violations_" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n      pSVar6 = sym->p_;\n      if ((((int)(uint)pSVar6->st_info >> 4 == 2) || ((byte)(to->super_Symbol).field_0x28 >> 4 == 2)\n          ) && (((local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0)))) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (((uVar17 != 0) && (to->symsize_ != 0)) &&\n           ((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)))) {\n          p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_;\n          if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {\n            uVar17 = pSVar6->st_value;\n            _adjust_common_sizes = object;\n            local_38 = 0;\n            local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);\n            local_40 = orig_st_shndx;\n            if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }\n            _adjust_dyndef = (to->super_Symbol).u1_;\n            local_28._M_p = (pointer)0x0;\n            local_2c = (_func_int_varargs **)to->value_;\n            pSVar20 = this;\n            pSVar21 = this;\n            local_54._8_4_ = p_Var8;\n            local_30 = uVar3;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);\n            local_54._8_4_ = (to->super_Symbol).name_;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);\n          }\n        }\n      }\n    }" { (expression_statement "pSVar6 = sym->p_;" (assignment_expression "pSVar6 = sym->p_" identifier = (field_expression "sym->p_" identifier -> field_identifier)) ;) (if_statement "if ((((int)(uint)pSVar6->st_info >> 4 == 2) || ((byte)(to->super_Symbol).field_0x28 >> 4 == 2)\n          ) && (((local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0)))) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (((uVar17 != 0) && (to->symsize_ != 0)) &&\n           ((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)))) {\n          p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_;\n          if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {\n            uVar17 = pSVar6->st_value;\n            _adjust_common_sizes = object;\n            local_38 = 0;\n            local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);\n            local_40 = orig_st_shndx;\n            if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }\n            _adjust_dyndef = (to->super_Symbol).u1_;\n            local_28._M_p = (pointer)0x0;\n            local_2c = (_func_int_varargs **)to->value_;\n            pSVar20 = this;\n            pSVar21 = this;\n            local_54._8_4_ = p_Var8;\n            local_30 = uVar3;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);\n            local_54._8_4_ = (to->super_Symbol).name_;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);\n          }\n        }\n      }" if (parenthesized_expression "((((int)(uint)pSVar6->st_info >> 4 == 2) || ((byte)(to->super_Symbol).field_0x28 >> 4 == 2)\n          ) && (((local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0))))" ( (binary_expression "(((int)(uint)pSVar6->st_info >> 4 == 2) || ((byte)(to->super_Symbol).field_0x28 >> 4 == 2)\n          ) && (((local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0)))" (parenthesized_expression "(((int)(uint)pSVar6->st_info >> 4 == 2) || ((byte)(to->super_Symbol).field_0x28 >> 4 == 2)\n          )" ( (binary_expression "((int)(uint)pSVar6->st_info >> 4 == 2) || ((byte)(to->super_Symbol).field_0x28 >> 4 == 2)" (parenthesized_expression "((int)(uint)pSVar6->st_info >> 4 == 2)" ( (binary_expression "(int)(uint)pSVar6->st_info >> 4 == 2" (binary_expression "(int)(uint)pSVar6->st_info >> 4" (cast_expression "(int)(uint)pSVar6->st_info" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)pSVar6->st_info" ( (type_descriptor "uint" type_identifier) ) (field_expression "pSVar6->st_info" identifier -> field_identifier))) >> number_literal) == number_literal) )) || (parenthesized_expression "((byte)(to->super_Symbol).field_0x28 >> 4 == 2)" ( (binary_expression "(byte)(to->super_Symbol).field_0x28 >> 4 == 2" (binary_expression "(byte)(to->super_Symbol).field_0x28 >> 4" (field_expression "(byte)(to->super_Symbol).field_0x28" (call_expression "(byte)(to->super_Symbol)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) ))) . field_identifier) >> number_literal) == number_literal) ))) )) && (parenthesized_expression "(((local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0)))" ( (parenthesized_expression "((local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0))" ( (binary_expression "(local_64 & orig_st_shndx != 0) != 0 && (uVar3 != 0)" (binary_expression "(local_64 & orig_st_shndx != 0) != 0" (parenthesized_expression "(local_64 & orig_st_shndx != 0)" ( (binary_expression "local_64 & orig_st_shndx != 0" identifier & (binary_expression "orig_st_shndx != 0" identifier != number_literal)) )) != number_literal) && (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) ))) )) ))) )) (compound_statement "{\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (((uVar17 != 0) && (to->symsize_ != 0)) &&\n           ((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)))) {\n          p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_;\n          if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {\n            uVar17 = pSVar6->st_value;\n            _adjust_common_sizes = object;\n            local_38 = 0;\n            local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);\n            local_40 = orig_st_shndx;\n            if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }\n            _adjust_dyndef = (to->super_Symbol).u1_;\n            local_28._M_p = (pointer)0x0;\n            local_2c = (_func_int_varargs **)to->value_;\n            pSVar20 = this;\n            pSVar21 = this;\n            local_54._8_4_ = p_Var8;\n            local_30 = uVar3;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);\n            local_54._8_4_ = (to->super_Symbol).name_;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);\n          }\n        }\n      }" { (expression_statement "uVar17 = pSVar6->st_size;" (assignment_expression "uVar17 = pSVar6->st_size" identifier = (field_expression "pSVar6->st_size" identifier -> field_identifier)) ;) (expression_statement "uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;" (assignment_expression "uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18" identifier = (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8" (binary_expression "uVar17 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar17 & 0xff0000) >> 8" (parenthesized_expression "(uVar17 & 0xff0000)" ( (binary_expression "uVar17 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar17 & 0xff00) << 8" (parenthesized_expression "(uVar17 & 0xff00)" ( (binary_expression "uVar17 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar17 << 0x18" identifier << number_literal))) ;) (if_statement "if (((uVar17 != 0) && (to->symsize_ != 0)) &&\n           ((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)))) {\n          p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_;\n          if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {\n            uVar17 = pSVar6->st_value;\n            _adjust_common_sizes = object;\n            local_38 = 0;\n            local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);\n            local_40 = orig_st_shndx;\n            if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }\n            _adjust_dyndef = (to->super_Symbol).u1_;\n            local_28._M_p = (pointer)0x0;\n            local_2c = (_func_int_varargs **)to->value_;\n            pSVar20 = this;\n            pSVar21 = this;\n            local_54._8_4_ = p_Var8;\n            local_30 = uVar3;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);\n            local_54._8_4_ = (to->super_Symbol).name_;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);\n          }\n        }" if (parenthesized_expression "(((uVar17 != 0) && (to->symsize_ != 0)) &&\n           ((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17))))" ( (binary_expression "((uVar17 != 0) && (to->symsize_ != 0)) &&\n           ((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)))" (parenthesized_expression "((uVar17 != 0) && (to->symsize_ != 0))" ( (binary_expression "(uVar17 != 0) && (to->symsize_ != 0)" (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) && (parenthesized_expression "(to->symsize_ != 0)" ( (binary_expression "to->symsize_ != 0" (field_expression "to->symsize_" identifier -> field_identifier) != number_literal) ))) )) && (parenthesized_expression "((local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)))" ( (parenthesized_expression "(local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17))" ( (comma_expression "local_64 = pSVar6->st_info & 0xf, local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)" (assignment_expression "local_64 = pSVar6->st_info & 0xf" identifier = (binary_expression "pSVar6->st_info & 0xf" (field_expression "pSVar6->st_info" identifier -> field_identifier) & number_literal)) , (binary_expression "local_64 != ((to->super_Symbol).field_0x28 & 0xf) ||\n            (to->symsize_ != uVar17)" (binary_expression "local_64 != ((to->super_Symbol).field_0x28 & 0xf)" identifier != (parenthesized_expression "((to->super_Symbol).field_0x28 & 0xf)" ( (binary_expression "(to->super_Symbol).field_0x28 & 0xf" (field_expression "(to->super_Symbol).field_0x28" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) ))) || (parenthesized_expression "(to->symsize_ != uVar17)" ( (binary_expression "to->symsize_ != uVar17" (field_expression "to->symsize_" identifier -> field_identifier) != identifier) )))) )) ))) )) (compound_statement "{\n          p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_;\n          if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {\n            uVar17 = pSVar6->st_value;\n            _adjust_common_sizes = object;\n            local_38 = 0;\n            local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);\n            local_40 = orig_st_shndx;\n            if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }\n            _adjust_dyndef = (to->super_Symbol).u1_;\n            local_28._M_p = (pointer)0x0;\n            local_2c = (_func_int_varargs **)to->value_;\n            pSVar20 = this;\n            pSVar21 = this;\n            local_54._8_4_ = p_Var8;\n            local_30 = uVar3;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);\n            local_54._8_4_ = (to->super_Symbol).name_;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);\n          }\n        }" { (expression_statement "p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_;" (assignment_expression "p_Var8 = (_Hash_node_base *)(to->super_Symbol).name_" identifier = (cast_expression "(_Hash_node_base *)(to->super_Symbol).name_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(to->super_Symbol).name_" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {\n            uVar17 = pSVar6->st_value;\n            _adjust_common_sizes = object;\n            local_38 = 0;\n            local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);\n            local_40 = orig_st_shndx;\n            if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }\n            _adjust_dyndef = (to->super_Symbol).u1_;\n            local_28._M_p = (pointer)0x0;\n            local_2c = (_func_int_varargs **)to->value_;\n            pSVar20 = this;\n            pSVar21 = this;\n            local_54._8_4_ = p_Var8;\n            local_30 = uVar3;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);\n            local_54._8_4_ = (to->super_Symbol).name_;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);\n          }" if (parenthesized_expression "((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z'))" ( (binary_expression "(*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')" (parenthesized_expression "(*(char *)&p_Var8->_M_nxt == '_')" ( (binary_expression "*(char *)&p_Var8->_M_nxt == '_'" (pointer_expression "*(char *)&p_Var8->_M_nxt" * (cast_expression "(char *)&p_Var8->_M_nxt" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var8->_M_nxt" & (field_expression "p_Var8->_M_nxt" identifier -> field_identifier)))) == (char_literal "'_'" ' character ')) )) && (parenthesized_expression "(*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')" ( (binary_expression "*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z'" (pointer_expression "*(char *)((int)&p_Var8->_M_nxt + 1)" * (cast_expression "(char *)((int)&p_Var8->_M_nxt + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p_Var8->_M_nxt + 1)" ( (binary_expression "(int)&p_Var8->_M_nxt + 1" (cast_expression "(int)&p_Var8->_M_nxt" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var8->_M_nxt" & (field_expression "p_Var8->_M_nxt" identifier -> field_identifier))) + number_literal) )))) == (char_literal "'Z'" ' character ')) ))) )) (compound_statement "{\n            uVar17 = pSVar6->st_value;\n            _adjust_common_sizes = object;\n            local_38 = 0;\n            local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);\n            local_40 = orig_st_shndx;\n            if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }\n            _adjust_dyndef = (to->super_Symbol).u1_;\n            local_28._M_p = (pointer)0x0;\n            local_2c = (_func_int_varargs **)to->value_;\n            pSVar20 = this;\n            pSVar21 = this;\n            local_54._8_4_ = p_Var8;\n            local_30 = uVar3;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);\n            local_54._8_4_ = (to->super_Symbol).name_;\n            __node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));\n            std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);\n          }" { (expression_statement "uVar17 = pSVar6->st_value;" (assignment_expression "uVar17 = pSVar6->st_value" identifier = (field_expression "pSVar6->st_value" identifier -> field_identifier)) ;) (expression_statement "_adjust_common_sizes = object;" (assignment_expression "_adjust_common_sizes = object" identifier = identifier) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18);" (assignment_expression "local_3c = (__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18)" identifier = (call_expression "(__bucket_type)\n                       (uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18)" (parenthesized_expression "(__bucket_type)" ( identifier )) (argument_list "(uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18)" ( (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                       uVar17 << 0x18" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8" (binary_expression "uVar17 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar17 & 0xff0000) >> 8" (parenthesized_expression "(uVar17 & 0xff0000)" ( (binary_expression "uVar17 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar17 & 0xff00) << 8" (parenthesized_expression "(uVar17 & 0xff00)" ( (binary_expression "uVar17 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar17 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "local_40 = orig_st_shndx;" (assignment_expression "local_40 = orig_st_shndx" identifier = identifier) ;) (if_statement "if (((to->super_Symbol).field_0x2a & 7) != 0) {\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }" if (parenthesized_expression "(((to->super_Symbol).field_0x2a & 7) != 0)" ( (binary_expression "((to->super_Symbol).field_0x2a & 7) != 0" (parenthesized_expression "((to->super_Symbol).field_0x2a & 7)" ( (binary_expression "(to->super_Symbol).field_0x2a & 7" (field_expression "(to->super_Symbol).field_0x2a" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");\n            }" { (labeled_statement "LAB_001661e5:\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/symtab.h",0xa1,"object");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/symtab.h",0xa1,"object");" (call_expression "do_gold_unreachable("../../gold/symtab.h",0xa1,"object")" identifier (argument_list "("../../gold/symtab.h",0xa1,"object")" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""object"" " string_content ") ))) ;)) })) (expression_statement "_adjust_dyndef = (to->super_Symbol).u1_;" (assignment_expression "_adjust_dyndef = (to->super_Symbol).u1_" identifier = (field_expression "(to->super_Symbol).u1_" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "local_28._M_p = (pointer)0x0;" (assignment_expression "local_28._M_p = (pointer)0x0" (field_expression "local_28._M_p" identifier . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "local_2c = (_func_int_varargs **)to->value_;" (assignment_expression "local_2c = (_func_int_varargs **)to->value_" identifier = (cast_expression "(_func_int_varargs **)to->value_" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "to->value_" identifier -> field_identifier))) ;) (expression_statement "pSVar20 = this;" (assignment_expression "pSVar20 = this" identifier = identifier) ;) (expression_statement "pSVar21 = this;" (assignment_expression "pSVar21 = this" identifier = identifier) ;) (expression_statement "local_54._8_4_ = p_Var8;" (assignment_expression "local_54._8_4_ = p_Var8" (field_expression "local_54._8_4_" identifier . field_identifier) = identifier) ;) (expression_statement "local_30 = uVar3;" (assignment_expression "local_30 = uVar3" identifier = identifier) ;) (ERROR "__node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::" (comma_expression "__node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std" (binary_expression "__node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const" (assignment_expression "__node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std" (field_expression "__node_gen._M_h" identifier . field_identifier) = (cast_expression "(__hashtable_alloc *)\n                 std" ( (type_descriptor "__hashtable_alloc *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) (ERROR "::__detail::\n                 _Map_base" : : identifier : : identifier) < identifier) (ERROR "*" *) , identifier) : : (comma_expression "pair<char_const*_const,_std" (binary_expression "pair<char_const*_const" identifier < (binary_expression "char_const*_const" identifier * identifier)) , identifier) : : (binary_expression "unordered_set<gold" identifier < identifier) : : (comma_expression "Symbol_location,_gold" identifier , identifier) : : (comma_expression "Symbol_location_hash,_std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (binary_expression "Symbol_location>,_std" identifier > (ERROR "," ,) identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Symbol_location>_>_>,_std" (binary_expression "Symbol_location>_>_" (binary_expression "Symbol_location>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<char_const*_const,_std" (binary_expression "pair<char_const*_const" identifier < (binary_expression "char_const*_const" identifier * identifier)) , identifier) : : (binary_expression "unordered_set<gold" identifier < identifier) : : (comma_expression "Symbol_location,_gold" identifier , identifier) : : (comma_expression "Symbol_location_hash,_std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (binary_expression "Symbol_location>,_std" identifier > (ERROR "," ,) identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Symbol_location>_>_>_>,_std" (binary_expression "Symbol_location>_>_>_" (binary_expression "Symbol_location>_>_" (binary_expression "Symbol_location>_" identifier > identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : :) (labeled_statement "__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" statement_identifier (ERROR "::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std:" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (comma_expression "equal_to<char_const*>,_std" (binary_expression "equal_to<char_const" identifier < identifier) (ERROR "*>" * >) , identifier) : : (comma_expression "hash<char_const*>,_std" (binary_expression "hash<char_const" identifier < identifier) (ERROR "*>" * >) , identifier) :) : (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" (comma_expression "_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8))" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8))" identifier , (binary_expression "_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8))" (binary_expression "_true>,_true" identifier > (ERROR "," ,) identifier) > (ERROR "::" : :) (call_expression "operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8))" (subscript_expression "operator[]" identifier [ identifier ]) (argument_list "((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8))" ( (binary_expression "(_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_" (parenthesized_expression "(_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)" ( (ERROR "_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Map_base<char_const*,_std" (binary_expression "_Map_base<char_const" identifier < identifier) (ERROR "*" *) , identifier) : : (comma_expression "pair<char_const*_const,_std" (binary_expression "pair<char_const*_const" identifier < (binary_expression "char_const*_const" identifier * identifier)) , identifier) : : (binary_expression "unordered_set<gold" identifier < identifier) : : (comma_expression "Symbol_location,_gold" identifier , identifier) : : (comma_expression "Symbol_location_hash,_std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (binary_expression "Symbol_location>,_std" identifier > (ERROR "," ,) identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Symbol_location>_>_>,_std" (binary_expression "Symbol_location>_>_" (binary_expression "Symbol_location>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<char_const*_const,_std" (binary_expression "pair<char_const*_const" identifier < (binary_expression "char_const*_const" identifier * identifier)) , identifier) : : (binary_expression "unordered_set<gold" identifier < identifier) : : (comma_expression "Symbol_location,_gold" identifier , identifier) : : (comma_expression "Symbol_location_hash,_std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (binary_expression "Symbol_location>,_std" identifier > (ERROR "," ,) identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Symbol_location>_>_>_>,_std" (binary_expression "Symbol_location>_>_>_" (binary_expression "Symbol_location>_>_" (binary_expression "Symbol_location>_" identifier > identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Select1st,_std" identifier , identifier) : : (comma_expression "equal_to<char_const*>,_std" (binary_expression "equal_to<char_const" identifier < identifier) (ERROR "*>" * >) , identifier) : : (comma_expression "hash<char_const*>,_std" (binary_expression "hash<char_const" identifier < identifier) (ERROR "*>" * >) , identifier) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : :) (comma_expression "_Hashtable_traits<false,_false,_true>,_true>\n                               *" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>,_true>\n                               *" identifier , (binary_expression "_true>,_true>\n                               *" (binary_expression "_true>,_true" identifier > (ERROR "," ,) identifier) > (pointer_expression "*" * identifier)))) )) & (field_expression "this->candidate_odr_violations_" identifier -> field_identifier)) , (cast_expression "(key_type *)(local_54 + 8)" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_54 + 8)" ( (binary_expression "local_54 + 8" identifier + number_literal) ))) )))))) ;)))))) (ERROR "std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::" (comma_expression "std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std" identifier (ERROR "::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>" : : (binary_expression "_Hashtable<gold" identifier < identifier) : : (comma_expression "Symbol_location,_gold" identifier , identifier) : : (comma_expression "Symbol_location,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier >) , identifier) : : identifier : : (comma_expression "_Identity,_std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (binary_expression "Symbol_location>,_gold" identifier > (ERROR "," ,) identifier) : : (comma_expression "Symbol_location_hash,_std" identifier , identifier) : :) (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);" statement_identifier (ERROR "::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : (comma_expression "__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std" identifier (ERROR "::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&" : : (comma_expression "_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n            ::\n            _M_insert<const_gold" identifier , (binary_expression "_true>_>\n            ::\n            _M_insert<const_gold" (binary_expression "_true>_>\n            ::\n            _M_insert" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) identifier) < identifier))) : : identifier &) , identifier) :) : (labeled_statement "__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);" statement_identifier (ERROR "::_AllocNode<std::allocator<std:" : : (binary_expression "_AllocNode<std" identifier < identifier) : : (binary_expression "allocator<std" identifier < identifier) :) : (labeled_statement "__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);" statement_identifier (ERROR "::_Hash_node<gold:" : : (binary_expression "_Hash_node<gold" identifier < identifier) :) : (expression_statement "Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21);" (comma_expression "Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21)" identifier , (binary_expression "_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21)" (binary_expression "_true>_>_>_" (binary_expression "_true>_>_" (binary_expression "_true>_" identifier > identifier) > identifier) > identifier) > (parenthesized_expression "((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21)" ( (parenthesized_expression "(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21)" ( (ERROR "_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Hashtable<std::__cxx11::basic_string<char,_std" (binary_expression "_Hashtable<std::__cxx11::basic_string<char" (binary_expression "_Hashtable<std" identifier < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Identity,_std" identifier , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "hash<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : :) (comma_expression "_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21" identifier , (comma_expression "_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21" (binary_expression "_true>_>\n                        *)local_54" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)local_54" * (ERROR ")" )) identifier)) , (comma_expression "__node_gen._M_h,&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21" (field_expression "__node_gen._M_h" identifier . field_identifier) , (comma_expression "&adjust_common_sizes,&__node_gen,0,1,pSVar20,\n                       pSVar21" (pointer_expression "&adjust_common_sizes" & identifier) , (comma_expression "&__node_gen,0,1,pSVar20,\n                       pSVar21" (pointer_expression "&__node_gen" & identifier) , (comma_expression "0,1,pSVar20,\n                       pSVar21" number_literal , (comma_expression "1,pSVar20,\n                       pSVar21" number_literal , (comma_expression "pSVar20,\n                       pSVar21" identifier , identifier))))))))) )) )))) ;)))))) (expression_statement "local_54._8_4_ = (to->super_Symbol).name_;" (assignment_expression "local_54._8_4_ = (to->super_Symbol).name_" (field_expression "local_54._8_4_" identifier . field_identifier) = (field_expression "(to->super_Symbol).name_" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier)) ;) (ERROR "__node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::" (comma_expression "__node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const*,_std" (binary_expression "__node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std::__detail::\n                 _Map_base<char_const" (assignment_expression "__node_gen._M_h =\n                 (__hashtable_alloc *)\n                 std" (field_expression "__node_gen._M_h" identifier . field_identifier) = (cast_expression "(__hashtable_alloc *)\n                 std" ( (type_descriptor "__hashtable_alloc *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) (ERROR "::__detail::\n                 _Map_base" : : identifier : : identifier) < identifier) (ERROR "*" *) , identifier) : : (comma_expression "pair<char_const*_const,_std" (binary_expression "pair<char_const*_const" identifier < (binary_expression "char_const*_const" identifier * identifier)) , identifier) : : (binary_expression "unordered_set<gold" identifier < identifier) : : (comma_expression "Symbol_location,_gold" identifier , identifier) : : (comma_expression "Symbol_location_hash,_std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (binary_expression "Symbol_location>,_std" identifier > (ERROR "," ,) identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Symbol_location>_>_>,_std" (binary_expression "Symbol_location>_>_" (binary_expression "Symbol_location>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<char_const*_const,_std" (binary_expression "pair<char_const*_const" identifier < (binary_expression "char_const*_const" identifier * identifier)) , identifier) : : (binary_expression "unordered_set<gold" identifier < identifier) : : (comma_expression "Symbol_location,_gold" identifier , identifier) : : (comma_expression "Symbol_location_hash,_std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (binary_expression "Symbol_location>,_std" identifier > (ERROR "," ,) identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Symbol_location>_>_>_>,_std" (binary_expression "Symbol_location>_>_>_" (binary_expression "Symbol_location>_>_" (binary_expression "Symbol_location>_" identifier > identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : :) (labeled_statement "__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" statement_identifier (ERROR "::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std:" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (comma_expression "equal_to<char_const*>,_std" (binary_expression "equal_to<char_const" identifier < identifier) (ERROR "*>" * >) , identifier) : : (comma_expression "hash<char_const*>,_std" (binary_expression "hash<char_const" identifier < identifier) (ERROR "*>" * >) , identifier) :) : (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8));" (comma_expression "_Hashtable_traits<false,_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8))" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8))" identifier , (binary_expression "_true>,_true>\n                 ::operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8))" (binary_expression "_true>,_true" identifier > (ERROR "," ,) identifier) > (ERROR "::" : :) (call_expression "operator[]((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8))" (subscript_expression "operator[]" identifier [ identifier ]) (argument_list "((_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_,(key_type *)(local_54 + 8))" ( (binary_expression "(_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)&this->candidate_odr_violations_" (parenthesized_expression "(_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                               *)" ( (ERROR "_Map_base<char_const*,_std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>,_std::allocator<std::pair<char_const*_const,_std::unordered_set<gold::Symbol_location,_gold::Symbol_location_hash,_std::equal_to<gold::Symbol_location>,_std::allocator<gold::Symbol_location>_>_>_>,_std::__detail::_Select1st,_std::equal_to<char_const*>,_std::hash<char_const*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Map_base<char_const*,_std" (binary_expression "_Map_base<char_const" identifier < identifier) (ERROR "*" *) , identifier) : : (comma_expression "pair<char_const*_const,_std" (binary_expression "pair<char_const*_const" identifier < (binary_expression "char_const*_const" identifier * identifier)) , identifier) : : (binary_expression "unordered_set<gold" identifier < identifier) : : (comma_expression "Symbol_location,_gold" identifier , identifier) : : (comma_expression "Symbol_location_hash,_std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (binary_expression "Symbol_location>,_std" identifier > (ERROR "," ,) identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Symbol_location>_>_>,_std" (binary_expression "Symbol_location>_>_" (binary_expression "Symbol_location>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<char_const*_const,_std" (binary_expression "pair<char_const*_const" identifier < (binary_expression "char_const*_const" identifier * identifier)) , identifier) : : (binary_expression "unordered_set<gold" identifier < identifier) : : (comma_expression "Symbol_location,_gold" identifier , identifier) : : (comma_expression "Symbol_location_hash,_std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (binary_expression "Symbol_location>,_std" identifier > (ERROR "," ,) identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Symbol_location>_>_>_>,_std" (binary_expression "Symbol_location>_>_>_" (binary_expression "Symbol_location>_>_" (binary_expression "Symbol_location>_" identifier > identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Select1st,_std" identifier , identifier) : : (comma_expression "equal_to<char_const*>,_std" (binary_expression "equal_to<char_const" identifier < identifier) (ERROR "*>" * >) , identifier) : : (comma_expression "hash<char_const*>,_std" (binary_expression "hash<char_const" identifier < identifier) (ERROR "*>" * >) , identifier) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : :) (comma_expression "_Hashtable_traits<false,_false,_true>,_true>\n                               *" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>,_true>\n                               *" identifier , (binary_expression "_true>,_true>\n                               *" (binary_expression "_true>,_true" identifier > (ERROR "," ,) identifier) > (pointer_expression "*" * identifier)))) )) & (field_expression "this->candidate_odr_violations_" identifier -> field_identifier)) , (cast_expression "(key_type *)(local_54 + 8)" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_54 + 8)" ( (binary_expression "local_54 + 8" identifier + number_literal) ))) )))))) ;)))))) (ERROR "std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std::__detail::_Identity,_std::equal_to<gold::Symbol_location>,_gold::Symbol_location_hash,_std::" (comma_expression "std::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>,_std" identifier (ERROR "::\n            _Hashtable<gold::Symbol_location,_gold::Symbol_location,_std::allocator<gold::Symbol_location>" : : (binary_expression "_Hashtable<gold" identifier < identifier) : : (comma_expression "Symbol_location,_gold" identifier , identifier) : : (comma_expression "Symbol_location,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier >) , identifier) : : identifier : : (comma_expression "_Identity,_std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (binary_expression "Symbol_location>,_gold" identifier > (ERROR "," ,) identifier) : : (comma_expression "Symbol_location_hash,_std" identifier , identifier) : :) (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);" statement_identifier (ERROR "::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : (comma_expression "__detail::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&,_std" identifier (ERROR "::_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold::Symbol_location&" : : (comma_expression "_Hashtable_traits<true,_true,_true>_>\n            ::\n            _M_insert<const_gold" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n            ::\n            _M_insert<const_gold" identifier , (binary_expression "_true>_>\n            ::\n            _M_insert<const_gold" (binary_expression "_true>_>\n            ::\n            _M_insert" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) identifier) < identifier))) : : identifier &) , identifier) :) : (labeled_statement "__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);" statement_identifier (ERROR "::_AllocNode<std::allocator<std:" : : (binary_expression "_AllocNode<std" identifier < identifier) : : (binary_expression "allocator<std" identifier < identifier) :) : (labeled_statement "__detail::_Hash_node<gold::Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);" statement_identifier (ERROR "::_Hash_node<gold:" : : (binary_expression "_Hash_node<gold" identifier < identifier) :) : (expression_statement "Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1);" (comma_expression "Symbol_location,_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1)" identifier , (binary_expression "_true>_>_>_>\n                      ((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1)" (binary_expression "_true>_>_>_" (binary_expression "_true>_>_" (binary_expression "_true>_" identifier > identifier) > identifier) > identifier) > (parenthesized_expression "((_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1)" ( (parenthesized_expression "(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1)" ( (ERROR "_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Hashtable<std::__cxx11::basic_string<char,_std" (binary_expression "_Hashtable<std::__cxx11::basic_string<char" (binary_expression "_Hashtable<std" identifier < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Identity,_std" identifier , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "hash<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : :) (comma_expression "_Hashtable_traits<true,_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1" identifier , (comma_expression "_true>_>\n                        *)local_54,__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1" (binary_expression "_true>_>\n                        *)local_54" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)local_54" * (ERROR ")" )) identifier)) , (comma_expression "__node_gen._M_h,&adjust_dyndef,&__node_gen,0,1" (field_expression "__node_gen._M_h" identifier . field_identifier) , (comma_expression "&adjust_dyndef,&__node_gen,0,1" (pointer_expression "&adjust_dyndef" & identifier) , (comma_expression "&__node_gen,0,1" (pointer_expression "&__node_gen" & identifier) , (comma_expression "0,1" number_literal , number_literal))))))) )) )))) ;)))))) })) })) })) })) (expression_statement "local_70 = &adjust_common_sizes;" (assignment_expression "local_70 = &adjust_common_sizes" identifier = (pointer_expression "&adjust_common_sizes" & identifier)) ;) (expression_statement "local_74 = &adjust_dyndef;" (assignment_expression "local_74 = &adjust_dyndef" identifier = (pointer_expression "&adjust_dyndef" & identifier)) ;) (expression_statement "iVar14 = (*object->_vptr_Object[5])(object);" (assignment_expression "iVar14 = (*object->_vptr_Object[5])(object)" identifier = (call_expression "(*object->_vptr_Object[5])(object)" (parenthesized_expression "(*object->_vptr_Object[5])" ( (pointer_expression "*object->_vptr_Object[5]" * (subscript_expression "object->_vptr_Object[5]" (field_expression "object->_vptr_Object" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(object)" ( identifier )))) ;) (if_statement "if (iVar14 == 0) {\n      SVar16 = (STT)sym->p_->st_info;\n      SVar19 = SVar16;\n    }\n    else {\n      SVar16 = (STT)sym->p_->st_info;\n      SVar19 = (uint)(byte)(to->super_Symbol).field_0x28;\n    }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n      SVar16 = (STT)sym->p_->st_info;\n      SVar19 = SVar16;\n    }" { (expression_statement "SVar16 = (STT)sym->p_->st_info;" (assignment_expression "SVar16 = (STT)sym->p_->st_info" identifier = (cast_expression "(STT)sym->p_->st_info" ( (type_descriptor "STT" type_identifier) ) (field_expression "sym->p_->st_info" (field_expression "sym->p_" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "SVar19 = SVar16;" (assignment_expression "SVar19 = SVar16" identifier = identifier) ;) }) (else_clause "else {\n      SVar16 = (STT)sym->p_->st_info;\n      SVar19 = (uint)(byte)(to->super_Symbol).field_0x28;\n    }" else (compound_statement "{\n      SVar16 = (STT)sym->p_->st_info;\n      SVar19 = (uint)(byte)(to->super_Symbol).field_0x28;\n    }" { (expression_statement "SVar16 = (STT)sym->p_->st_info;" (assignment_expression "SVar16 = (STT)sym->p_->st_info" identifier = (cast_expression "(STT)sym->p_->st_info" ( (type_descriptor "STT" type_identifier) ) (field_expression "sym->p_->st_info" (field_expression "sym->p_" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "SVar19 = (uint)(byte)(to->super_Symbol).field_0x28;" (assignment_expression "SVar19 = (uint)(byte)(to->super_Symbol).field_0x28" identifier = (field_expression "(uint)(byte)(to->super_Symbol).field_0x28" (call_expression "(uint)(byte)(to->super_Symbol)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) ))) . field_identifier)) ;) }))) (expression_statement "uVar17 = symbol_to_bits((int)SVar16 >> 4,(bool)(object->field_0x2c & 1),st_shndx,is_ordinary);" (assignment_expression "uVar17 = symbol_to_bits((int)SVar16 >> 4,(bool)(object->field_0x2c & 1),st_shndx,is_ordinary)" identifier = (call_expression "symbol_to_bits((int)SVar16 >> 4,(bool)(object->field_0x2c & 1),st_shndx,is_ordinary)" identifier (argument_list "((int)SVar16 >> 4,(bool)(object->field_0x2c & 1),st_shndx,is_ordinary)" ( (binary_expression "(int)SVar16 >> 4" (cast_expression "(int)SVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , (cast_expression "(bool)(object->field_0x2c & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(object->field_0x2c & 1)" ( (binary_expression "object->field_0x2c & 1" (field_expression "object->field_0x2c" identifier -> field_identifier) & number_literal) ))) , identifier , identifier )))) ;) (expression_statement "uVar3 = to->symsize_;" (assignment_expression "uVar3 = to->symsize_" identifier = (field_expression "to->symsize_" identifier -> field_identifier)) ;) (expression_statement "bVar12 = should_override(&to->super_Symbol,uVar17,SVar19 & STT_HIPROC,OBJECT,object,local_70,\n                             local_74,is_default_version);" (assignment_expression "bVar12 = should_override(&to->super_Symbol,uVar17,SVar19 & STT_HIPROC,OBJECT,object,local_70,\n                             local_74,is_default_version)" identifier = (call_expression "should_override(&to->super_Symbol,uVar17,SVar19 & STT_HIPROC,OBJECT,object,local_70,\n                             local_74,is_default_version)" identifier (argument_list "(&to->super_Symbol,uVar17,SVar19 & STT_HIPROC,OBJECT,object,local_70,\n                             local_74,is_default_version)" ( (pointer_expression "&to->super_Symbol" & (field_expression "to->super_Symbol" identifier -> field_identifier)) , identifier , (binary_expression "SVar19 & STT_HIPROC" identifier & identifier) , identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (bVar12) {\n      bVar13 = (to->super_Symbol).field_0x28;\n      uVar17 = to->value_;\n      override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n      if (adjust_common_sizes != false) {\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }\n      if ((adjust_dyndef != false) &&\n         ((bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0)))) {\n        (to->super_Symbol).field_0x2c =\n             (to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    else {\n      pSVar6 = sym->p_;\n      if (adjust_common_sizes != false) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar3 < uVar17) {\n          to->symsize_ = uVar17;\n        }\n        uVar17 = pSVar6->st_value;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }\n      if (adjust_dyndef != false) {\n        bVar13 = (to->super_Symbol).field_0x2c;\n        if (((bVar13 & 1) == 0) || ((bVar13 & 2) != 0)) {\n          (to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;\n        }\n      }\n      bVar13 = pSVar6->st_other & 3;\n      if ((pSVar6->st_other & 3) != 0) {\n        bVar2 = (to->super_Symbol).field_0x29;\n        if (((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3))) {\n          (to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;\n        }\n      }\n    }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n      bVar13 = (to->super_Symbol).field_0x28;\n      uVar17 = to->value_;\n      override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);\n      if (adjust_common_sizes != false) {\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }\n      if ((adjust_dyndef != false) &&\n         ((bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0)))) {\n        (to->super_Symbol).field_0x2c =\n             (to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02' | 1;\n      }\n    }" { (expression_statement "bVar13 = (to->super_Symbol).field_0x28;" (assignment_expression "bVar13 = (to->super_Symbol).field_0x28" identifier = (field_expression "(to->super_Symbol).field_0x28" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar17 = to->value_;" (assignment_expression "uVar17 = to->value_" identifier = (field_expression "to->value_" identifier -> field_identifier)) ;) (expression_statement "override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version);" (comma_expression "override<32,_true>(this,to,sym,st_shndx,is_ordinary,object,version)" (binary_expression "override<32" identifier < number_literal) , (binary_expression "_true>(this,to,sym,st_shndx,is_ordinary,object,version)" identifier > (parenthesized_expression "(this,to,sym,st_shndx,is_ordinary,object,version)" ( (comma_expression "this,to,sym,st_shndx,is_ordinary,object,version" identifier , (comma_expression "to,sym,st_shndx,is_ordinary,object,version" identifier , (comma_expression "sym,st_shndx,is_ordinary,object,version" identifier , (comma_expression "st_shndx,is_ordinary,object,version" identifier , (comma_expression "is_ordinary,object,version" identifier , (comma_expression "object,version" identifier , identifier)))))) )))) ;) (if_statement "if (adjust_common_sizes != false) {\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }" if (parenthesized_expression "(adjust_common_sizes != false)" ( (binary_expression "adjust_common_sizes != false" identifier != false) )) (compound_statement "{\n        if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }" { (if_statement "if (to->symsize_ < uVar3) {\n          to->symsize_ = uVar3;\n        }" if (parenthesized_expression "(to->symsize_ < uVar3)" ( (binary_expression "to->symsize_ < uVar3" (field_expression "to->symsize_" identifier -> field_identifier) < identifier) )) (compound_statement "{\n          to->symsize_ = uVar3;\n        }" { (expression_statement "to->symsize_ = uVar3;" (assignment_expression "to->symsize_ = uVar3" (field_expression "to->symsize_" identifier -> field_identifier) = identifier) ;) })) (if_statement "if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }" if (parenthesized_expression "(to->value_ < uVar17)" ( (binary_expression "to->value_ < uVar17" (field_expression "to->value_" identifier -> field_identifier) < identifier) )) (compound_statement "{\n          to->value_ = uVar17;\n        }" { (expression_statement "to->value_ = uVar17;" (assignment_expression "to->value_ = uVar17" (field_expression "to->value_" identifier -> field_identifier) = identifier) ;) })) })) (if_statement "if ((adjust_dyndef != false) &&\n         ((bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0)))) {\n        (to->super_Symbol).field_0x2c =\n             (to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02' | 1;\n      }" if (parenthesized_expression "((adjust_dyndef != false) &&\n         ((bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0))))" ( (binary_expression "(adjust_dyndef != false) &&\n         ((bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0)))" (parenthesized_expression "(adjust_dyndef != false)" ( (binary_expression "adjust_dyndef != false" identifier != false) )) && (parenthesized_expression "((bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0)))" ( (parenthesized_expression "(bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0))" ( (comma_expression "bVar2 = (to->super_Symbol).field_0x2c, (bVar2 & 1) == 0 || ((bVar2 & 2) != 0)" (assignment_expression "bVar2 = (to->super_Symbol).field_0x2c" identifier = (field_expression "(to->super_Symbol).field_0x2c" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "(bVar2 & 1) == 0 || ((bVar2 & 2) != 0)" (binary_expression "(bVar2 & 1) == 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) == number_literal) || (parenthesized_expression "((bVar2 & 2) != 0)" ( (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) != number_literal) )))) )) ))) )) (compound_statement "{\n        (to->super_Symbol).field_0x2c =\n             (to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02' | 1;\n      }" { (expression_statement "(to->super_Symbol).field_0x2c =\n             (to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02' | 1;" (assignment_expression "(to->super_Symbol).field_0x2c =\n             (to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02' | 1" (field_expression "(to->super_Symbol).field_0x2c" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02' | 1" (binary_expression "(to->super_Symbol).field_0x2c & 0xfd | (bVar13 >> 4 == 2) * '\x02'" (binary_expression "(to->super_Symbol).field_0x2c & 0xfd" (field_expression "(to->super_Symbol).field_0x2c" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) | (binary_expression "(bVar13 >> 4 == 2) * '\x02'" (parenthesized_expression "(bVar13 >> 4 == 2)" ( (binary_expression "bVar13 >> 4 == 2" (binary_expression "bVar13 >> 4" identifier >> number_literal) == number_literal) )) * (char_literal "'\x02'" ' escape_sequence '))) | number_literal)) ;) })) }) (else_clause "else {\n      pSVar6 = sym->p_;\n      if (adjust_common_sizes != false) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar3 < uVar17) {\n          to->symsize_ = uVar17;\n        }\n        uVar17 = pSVar6->st_value;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }\n      if (adjust_dyndef != false) {\n        bVar13 = (to->super_Symbol).field_0x2c;\n        if (((bVar13 & 1) == 0) || ((bVar13 & 2) != 0)) {\n          (to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;\n        }\n      }\n      bVar13 = pSVar6->st_other & 3;\n      if ((pSVar6->st_other & 3) != 0) {\n        bVar2 = (to->super_Symbol).field_0x29;\n        if (((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3))) {\n          (to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;\n        }\n      }\n    }" else (compound_statement "{\n      pSVar6 = sym->p_;\n      if (adjust_common_sizes != false) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar3 < uVar17) {\n          to->symsize_ = uVar17;\n        }\n        uVar17 = pSVar6->st_value;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }\n      if (adjust_dyndef != false) {\n        bVar13 = (to->super_Symbol).field_0x2c;\n        if (((bVar13 & 1) == 0) || ((bVar13 & 2) != 0)) {\n          (to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;\n        }\n      }\n      bVar13 = pSVar6->st_other & 3;\n      if ((pSVar6->st_other & 3) != 0) {\n        bVar2 = (to->super_Symbol).field_0x29;\n        if (((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3))) {\n          (to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;\n        }\n      }\n    }" { (expression_statement "pSVar6 = sym->p_;" (assignment_expression "pSVar6 = sym->p_" identifier = (field_expression "sym->p_" identifier -> field_identifier)) ;) (if_statement "if (adjust_common_sizes != false) {\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar3 < uVar17) {\n          to->symsize_ = uVar17;\n        }\n        uVar17 = pSVar6->st_value;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }" if (parenthesized_expression "(adjust_common_sizes != false)" ( (binary_expression "adjust_common_sizes != false" identifier != false) )) (compound_statement "{\n        uVar17 = pSVar6->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar3 < uVar17) {\n          to->symsize_ = uVar17;\n        }\n        uVar17 = pSVar6->st_value;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }\n      }" { (expression_statement "uVar17 = pSVar6->st_size;" (assignment_expression "uVar17 = pSVar6->st_size" identifier = (field_expression "pSVar6->st_size" identifier -> field_identifier)) ;) (expression_statement "uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;" (assignment_expression "uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18" identifier = (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8" (binary_expression "uVar17 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar17 & 0xff0000) >> 8" (parenthesized_expression "(uVar17 & 0xff0000)" ( (binary_expression "uVar17 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar17 & 0xff00) << 8" (parenthesized_expression "(uVar17 & 0xff00)" ( (binary_expression "uVar17 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar17 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar3 < uVar17) {\n          to->symsize_ = uVar17;\n        }" if (parenthesized_expression "(uVar3 < uVar17)" ( (binary_expression "uVar3 < uVar17" identifier < identifier) )) (compound_statement "{\n          to->symsize_ = uVar17;\n        }" { (expression_statement "to->symsize_ = uVar17;" (assignment_expression "to->symsize_ = uVar17" (field_expression "to->symsize_" identifier -> field_identifier) = identifier) ;) })) (expression_statement "uVar17 = pSVar6->st_value;" (assignment_expression "uVar17 = pSVar6->st_value" identifier = (field_expression "pSVar6->st_value" identifier -> field_identifier)) ;) (expression_statement "uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;" (assignment_expression "uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18" identifier = (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8" (binary_expression "uVar17 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar17 & 0xff0000) >> 8" (parenthesized_expression "(uVar17 & 0xff0000)" ( (binary_expression "uVar17 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar17 & 0xff00) << 8" (parenthesized_expression "(uVar17 & 0xff00)" ( (binary_expression "uVar17 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar17 << 0x18" identifier << number_literal))) ;) (if_statement "if (to->value_ < uVar17) {\n          to->value_ = uVar17;\n        }" if (parenthesized_expression "(to->value_ < uVar17)" ( (binary_expression "to->value_ < uVar17" (field_expression "to->value_" identifier -> field_identifier) < identifier) )) (compound_statement "{\n          to->value_ = uVar17;\n        }" { (expression_statement "to->value_ = uVar17;" (assignment_expression "to->value_ = uVar17" (field_expression "to->value_" identifier -> field_identifier) = identifier) ;) })) })) (if_statement "if (adjust_dyndef != false) {\n        bVar13 = (to->super_Symbol).field_0x2c;\n        if (((bVar13 & 1) == 0) || ((bVar13 & 2) != 0)) {\n          (to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;\n        }\n      }" if (parenthesized_expression "(adjust_dyndef != false)" ( (binary_expression "adjust_dyndef != false" identifier != false) )) (compound_statement "{\n        bVar13 = (to->super_Symbol).field_0x2c;\n        if (((bVar13 & 1) == 0) || ((bVar13 & 2) != 0)) {\n          (to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;\n        }\n      }" { (expression_statement "bVar13 = (to->super_Symbol).field_0x2c;" (assignment_expression "bVar13 = (to->super_Symbol).field_0x2c" identifier = (field_expression "(to->super_Symbol).field_0x2c" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((bVar13 & 1) == 0) || ((bVar13 & 2) != 0)) {\n          (to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;\n        }" if (parenthesized_expression "(((bVar13 & 1) == 0) || ((bVar13 & 2) != 0))" ( (binary_expression "((bVar13 & 1) == 0) || ((bVar13 & 2) != 0)" (parenthesized_expression "((bVar13 & 1) == 0)" ( (binary_expression "(bVar13 & 1) == 0" (parenthesized_expression "(bVar13 & 1)" ( (binary_expression "bVar13 & 1" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((bVar13 & 2) != 0)" ( (binary_expression "(bVar13 & 2) != 0" (parenthesized_expression "(bVar13 & 2)" ( (binary_expression "bVar13 & 2" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          (to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;\n        }" { (expression_statement "(to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1;" (assignment_expression "(to->super_Symbol).field_0x2c =\n               (to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1" (field_expression "(to->super_Symbol).field_0x2c" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02' | 1" (binary_expression "(to->super_Symbol).field_0x2c & 0xfd |\n               ((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02'" (binary_expression "(to->super_Symbol).field_0x2c & 0xfd" (field_expression "(to->super_Symbol).field_0x2c" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) | (binary_expression "((int)(uint)pSVar6->st_info >> 4 == 2) * '\x02'" (parenthesized_expression "((int)(uint)pSVar6->st_info >> 4 == 2)" ( (binary_expression "(int)(uint)pSVar6->st_info >> 4 == 2" (binary_expression "(int)(uint)pSVar6->st_info >> 4" (cast_expression "(int)(uint)pSVar6->st_info" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)pSVar6->st_info" ( (type_descriptor "uint" type_identifier) ) (field_expression "pSVar6->st_info" identifier -> field_identifier))) >> number_literal) == number_literal) )) * (char_literal "'\x02'" ' escape_sequence '))) | number_literal)) ;) })) })) (expression_statement "bVar13 = pSVar6->st_other & 3;" (assignment_expression "bVar13 = pSVar6->st_other & 3" identifier = (binary_expression "pSVar6->st_other & 3" (field_expression "pSVar6->st_other" identifier -> field_identifier) & number_literal)) ;) (if_statement "if ((pSVar6->st_other & 3) != 0) {\n        bVar2 = (to->super_Symbol).field_0x29;\n        if (((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3))) {\n          (to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;\n        }\n      }" if (parenthesized_expression "((pSVar6->st_other & 3) != 0)" ( (binary_expression "(pSVar6->st_other & 3) != 0" (parenthesized_expression "(pSVar6->st_other & 3)" ( (binary_expression "pSVar6->st_other & 3" (field_expression "pSVar6->st_other" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        bVar2 = (to->super_Symbol).field_0x29;\n        if (((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3))) {\n          (to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;\n        }\n      }" { (expression_statement "bVar2 = (to->super_Symbol).field_0x29;" (assignment_expression "bVar2 = (to->super_Symbol).field_0x29" identifier = (field_expression "(to->super_Symbol).field_0x29" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3))) {\n          (to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;\n        }" if (parenthesized_expression "(((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3)))" ( (binary_expression "((bVar2 & 3) == 0) || (bVar13 < (bVar2 & 3))" (parenthesized_expression "((bVar2 & 3) == 0)" ( (binary_expression "(bVar2 & 3) == 0" (parenthesized_expression "(bVar2 & 3)" ( (binary_expression "bVar2 & 3" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(bVar13 < (bVar2 & 3))" ( (binary_expression "bVar13 < (bVar2 & 3)" identifier < (parenthesized_expression "(bVar2 & 3)" ( (binary_expression "bVar2 & 3" identifier & number_literal) ))) ))) )) (compound_statement "{\n          (to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;\n        }" { (expression_statement "(to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc;" (assignment_expression "(to->super_Symbol).field_0x29 = bVar13 | bVar2 & 0xfc" (field_expression "(to->super_Symbol).field_0x29" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) = (binary_expression "bVar13 | bVar2 & 0xfc" identifier | (binary_expression "bVar2 & 0xfc" identifier & number_literal))) ;) })) })) }))) (expression_statement "bVar13 = (to->super_Symbol).field_0x2a;" (assignment_expression "bVar13 = (to->super_Symbol).field_0x2a" identifier = (field_expression "(to->super_Symbol).field_0x2a" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((bVar13 & 7) == 0) {\n      pOVar7 = (to->super_Symbol).u1_.output_segment;\n      bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      if ((((bVar2 & 1) != 0) && ((char)bVar13 < '\0')) &&\n         (((to->super_Symbol).field_0x2c & 2) == 0)) {\n        *(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_end_of_storage = bVar2 | 2;\n      }\n    }" if (parenthesized_expression "((bVar13 & 7) == 0)" ( (binary_expression "(bVar13 & 7) == 0" (parenthesized_expression "(bVar13 & 7)" ( (binary_expression "bVar13 & 7" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pOVar7 = (to->super_Symbol).u1_.output_segment;\n      bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      if ((((bVar2 & 1) != 0) && ((char)bVar13 < '\0')) &&\n         (((to->super_Symbol).field_0x2c & 2) == 0)) {\n        *(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_end_of_storage = bVar2 | 2;\n      }\n    }" { (expression_statement "pOVar7 = (to->super_Symbol).u1_.output_segment;" (assignment_expression "pOVar7 = (to->super_Symbol).u1_.output_segment" identifier = (field_expression "(to->super_Symbol).u1_.output_segment" (field_expression "(to->super_Symbol).u1_" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;" (field_expression "bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage" (field_expression "bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl" (binary_expression "bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std" (assignment_expression "bVar2 = *(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold" identifier = (binary_expression "*(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base<gold" (pointer_expression "*(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base" * (cast_expression "(byte *)&pOVar7->output_lists_[3].\n                        super__Vector_base" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar7->output_lists_[3].\n                        super__Vector_base" & (field_expression "pOVar7->output_lists_[3].\n                        super__Vector_base" (subscript_expression "pOVar7->output_lists_[3]" (field_expression "pOVar7->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if ((((bVar2 & 1) != 0) && ((char)bVar13 < '\0')) &&\n         (((to->super_Symbol).field_0x2c & 2) == 0)) {\n        *(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_end_of_storage = bVar2 | 2;\n      }" if (parenthesized_expression "((((bVar2 & 1) != 0) && ((char)bVar13 < '\0')) &&\n         (((to->super_Symbol).field_0x2c & 2) == 0))" ( (binary_expression "(((bVar2 & 1) != 0) && ((char)bVar13 < '\0')) &&\n         (((to->super_Symbol).field_0x2c & 2) == 0)" (parenthesized_expression "(((bVar2 & 1) != 0) && ((char)bVar13 < '\0'))" ( (binary_expression "((bVar2 & 1) != 0) && ((char)bVar13 < '\0')" (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((char)bVar13 < '\0')" ( (binary_expression "(char)bVar13 < '\0'" (cast_expression "(char)bVar13" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(((to->super_Symbol).field_0x2c & 2) == 0)" ( (binary_expression "((to->super_Symbol).field_0x2c & 2) == 0" (parenthesized_expression "((to->super_Symbol).field_0x2c & 2)" ( (binary_expression "(to->super_Symbol).field_0x2c & 2" (field_expression "(to->super_Symbol).field_0x2c" (parenthesized_expression "(to->super_Symbol)" ( (field_expression "to->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        *(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_end_of_storage = bVar2 | 2;\n      }" { (expression_statement "*(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_end_of_storage = bVar2 | 2;" (assignment_expression "*(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_end_of_storage = bVar2 | 2" (field_expression "*(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_end_of_storage" (field_expression "*(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl" (binary_expression "*(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "*(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "*(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold::Output_data*,_std" (binary_expression "*(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base<gold" (pointer_expression "*(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base" * (cast_expression "(byte *)&pOVar7->output_lists_[3].\n                  super__Vector_base" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar7->output_lists_[3].\n                  super__Vector_base" & (field_expression "pOVar7->output_lists_[3].\n                  super__Vector_base" (subscript_expression "pOVar7->output_lists_[3]" (field_expression "pOVar7->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "bVar2 | 2" identifier | number_literal)) ;) })) })) (if_statement "if (adjust_common_sizes != false) {\n      if (parameters->options_ == (General_options *)0x0) {\nLAB_00165d90:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\n      if ((parameters->options_->warn_common_).value != false) {\n        uVar17 = sym->p_->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar17 < uVar3) {\n          pcVar18 = "common of \'%s\' overriding smaller common";\n        }\n        else if (uVar3 < uVar17) {\n          pcVar18 = "common of \'%s\' overidden by larger common";\n        }\n        else {\n          pcVar18 = "multiple common of \'%s\'";\n        }\n        pcVar18 = (char *)gettext(pcVar18);\n        report_resolve_problem(false,pcVar18,&to->super_Symbol,OBJECT,object);\n      }\n    }" if (parenthesized_expression "(adjust_common_sizes != false)" ( (binary_expression "adjust_common_sizes != false" identifier != false) )) (compound_statement "{\n      if (parameters->options_ == (General_options *)0x0) {\nLAB_00165d90:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\n      if ((parameters->options_->warn_common_).value != false) {\n        uVar17 = sym->p_->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar17 < uVar3) {\n          pcVar18 = "common of \'%s\' overriding smaller common";\n        }\n        else if (uVar3 < uVar17) {\n          pcVar18 = "common of \'%s\' overidden by larger common";\n        }\n        else {\n          pcVar18 = "multiple common of \'%s\'";\n        }\n        pcVar18 = (char *)gettext(pcVar18);\n        report_resolve_problem(false,pcVar18,&to->super_Symbol,OBJECT,object);\n      }\n    }" { (if_statement "if (parameters->options_ == (General_options *)0x0) {\nLAB_00165d90:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00165d90:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }" { (labeled_statement "LAB_00165d90:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (if_statement "if ((parameters->options_->warn_common_).value != false) {\n        uVar17 = sym->p_->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar17 < uVar3) {\n          pcVar18 = "common of \'%s\' overriding smaller common";\n        }\n        else if (uVar3 < uVar17) {\n          pcVar18 = "common of \'%s\' overidden by larger common";\n        }\n        else {\n          pcVar18 = "multiple common of \'%s\'";\n        }\n        pcVar18 = (char *)gettext(pcVar18);\n        report_resolve_problem(false,pcVar18,&to->super_Symbol,OBJECT,object);\n      }" if (parenthesized_expression "((parameters->options_->warn_common_).value != false)" ( (binary_expression "(parameters->options_->warn_common_).value != false" (field_expression "(parameters->options_->warn_common_).value" (parenthesized_expression "(parameters->options_->warn_common_)" ( (field_expression "parameters->options_->warn_common_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n        uVar17 = sym->p_->st_size;\n        uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;\n        if (uVar17 < uVar3) {\n          pcVar18 = "common of \'%s\' overriding smaller common";\n        }\n        else if (uVar3 < uVar17) {\n          pcVar18 = "common of \'%s\' overidden by larger common";\n        }\n        else {\n          pcVar18 = "multiple common of \'%s\'";\n        }\n        pcVar18 = (char *)gettext(pcVar18);\n        report_resolve_problem(false,pcVar18,&to->super_Symbol,OBJECT,object);\n      }" { (expression_statement "uVar17 = sym->p_->st_size;" (assignment_expression "uVar17 = sym->p_->st_size" identifier = (field_expression "sym->p_->st_size" (field_expression "sym->p_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18\n        ;" (assignment_expression "uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18" identifier = (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 | uVar17 << 0x18" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8" (binary_expression "uVar17 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar17 & 0xff0000) >> 8" (parenthesized_expression "(uVar17 & 0xff0000)" ( (binary_expression "uVar17 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar17 & 0xff00) << 8" (parenthesized_expression "(uVar17 & 0xff00)" ( (binary_expression "uVar17 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar17 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar17 < uVar3) {\n          pcVar18 = "common of \'%s\' overriding smaller common";\n        }\n        else if (uVar3 < uVar17) {\n          pcVar18 = "common of \'%s\' overidden by larger common";\n        }\n        else {\n          pcVar18 = "multiple common of \'%s\'";\n        }" if (parenthesized_expression "(uVar17 < uVar3)" ( (binary_expression "uVar17 < uVar3" identifier < identifier) )) (compound_statement "{\n          pcVar18 = "common of \'%s\' overriding smaller common";\n        }" { (expression_statement "pcVar18 = "common of \'%s\' overriding smaller common";" (assignment_expression "pcVar18 = "common of \'%s\' overriding smaller common"" identifier = (string_literal ""common of \'%s\' overriding smaller common"" " string_content escape_sequence string_content escape_sequence string_content ")) ;) }) (else_clause "else if (uVar3 < uVar17) {\n          pcVar18 = "common of \'%s\' overidden by larger common";\n        }\n        else {\n          pcVar18 = "multiple common of \'%s\'";\n        }" else (if_statement "if (uVar3 < uVar17) {\n          pcVar18 = "common of \'%s\' overidden by larger common";\n        }\n        else {\n          pcVar18 = "multiple common of \'%s\'";\n        }" if (parenthesized_expression "(uVar3 < uVar17)" ( (binary_expression "uVar3 < uVar17" identifier < identifier) )) (compound_statement "{\n          pcVar18 = "common of \'%s\' overidden by larger common";\n        }" { (expression_statement "pcVar18 = "common of \'%s\' overidden by larger common";" (assignment_expression "pcVar18 = "common of \'%s\' overidden by larger common"" identifier = (string_literal ""common of \'%s\' overidden by larger common"" " string_content escape_sequence string_content escape_sequence string_content ")) ;) }) (else_clause "else {\n          pcVar18 = "multiple common of \'%s\'";\n        }" else (compound_statement "{\n          pcVar18 = "multiple common of \'%s\'";\n        }" { (expression_statement "pcVar18 = "multiple common of \'%s\'";" (assignment_expression "pcVar18 = "multiple common of \'%s\'"" identifier = (string_literal ""multiple common of \'%s\'"" " string_content escape_sequence string_content escape_sequence ")) ;) }))))) (expression_statement "pcVar18 = (char *)gettext(pcVar18);" (assignment_expression "pcVar18 = (char *)gettext(pcVar18)" identifier = (cast_expression "(char *)gettext(pcVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(pcVar18)" identifier (argument_list "(pcVar18)" ( identifier ))))) ;) (expression_statement "report_resolve_problem(false,pcVar18,&to->super_Symbol,OBJECT,object);" (call_expression "report_resolve_problem(false,pcVar18,&to->super_Symbol,OBJECT,object)" identifier (argument_list "(false,pcVar18,&to->super_Symbol,OBJECT,object)" ( false , identifier , (pointer_expression "&to->super_Symbol" & (field_expression "to->super_Symbol" identifier -> field_identifier)) , identifier , identifier ))) ;) })) })) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void __regparm2\nFUN_00165a70(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,\n            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,\n            undefined **param_10,uint param_11)\n\n{\n  byte bVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  byte bVar6;\n  char *pcVar7;\n  int iVar8;\n  undefined4 uVar9;\n  undefined **ppuVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  undefined ***pppuVar13;\n  bool bVar14;\n  undefined **ppuStack_84;\n  undefined **ppuStack_80;\n  undefined1 auStack_7c [4];\n  undefined4 *local_78;\n  undefined4 **local_74;\n  int **local_70;\n  undefined1 *local_6c;\n  uint local_68;\n  char **local_64;\n  undefined **local_60;\n  undefined **local_5c;\n  uint local_58;\n  undefined1 local_54 [8];\n  char *local_4c;\n  undefined4 local_48;\n  int *local_44;\n  int local_40;\n  uint local_3c;\n  undefined4 local_38;\n  undefined4 *local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_5c = &__DT_PLTGOT;\n  local_58 = param_7;\n  local_68 = param_11;\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    \n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }\n  local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);\n  local_6c = (undefined1 *)param_4[3];\n  ppuVar10 = &__DT_PLTGOT;\n  if (param_9 == (int *)param_4[2]) {\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }\n  local_5c = ppuVar10;\n  pppuVar13 = (undefined ***)auStack_7c;\n  local_60 = local_5c + 0xde;\n  piVar2 = *(int **)(*local_60 + 0xc);\n  if (piVar2 == (int *)0x0) {\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    \n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }\n  if ((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     ) {\n    return;\n  }\n  if ((*(byte *)(param_9 + 0xb) & 1) == 0) {\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }\n  else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }\n  if (*(char *)(iVar8 + 0xe0d) == '\0') {\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }\n  else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }\nLAB_00165ba8:\n  iVar8 = *param_9;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  pcVar3 = *(code **)(iVar8 + 0x14);\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;\n  iVar8 = (*pcVar3)();\n  if (iVar8 == 0) {\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }\n  local_64 = (char **)(local_58 & 0xff);\n  *(char ***)((int)pppuVar13 + -0x10) = local_64;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;\n  uVar9 = FUN_001630f0();\n  local_58 = param_4[0xd];\n  *(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;\n  *(undefined4 ***)((int)pppuVar13 + -8) = local_74;\n  *(int ***)((int)pppuVar13 + -0xc) = local_70;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n  *(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;\n  *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n  *(undefined4 **)((int)pppuVar13 + -0x20) = param_4;\n  *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;\n  cVar5 = FUN_00163520();\n  if (cVar5 == '\0') {\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }\n  if ((char)local_44 != '\0') {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }\n  return;\n}\n\n" (function_definition "void __regparm2\nFUN_00165a70(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,\n            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,\n            undefined **param_10,uint param_11)\n\n{\n  byte bVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  byte bVar6;\n  char *pcVar7;\n  int iVar8;\n  undefined4 uVar9;\n  undefined **ppuVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  undefined ***pppuVar13;\n  bool bVar14;\n  undefined **ppuStack_84;\n  undefined **ppuStack_80;\n  undefined1 auStack_7c [4];\n  undefined4 *local_78;\n  undefined4 **local_74;\n  int **local_70;\n  undefined1 *local_6c;\n  uint local_68;\n  char **local_64;\n  undefined **local_60;\n  undefined **local_5c;\n  uint local_58;\n  undefined1 local_54 [8];\n  char *local_4c;\n  undefined4 local_48;\n  int *local_44;\n  int local_40;\n  uint local_3c;\n  undefined4 local_38;\n  undefined4 *local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_5c = &__DT_PLTGOT;\n  local_58 = param_7;\n  local_68 = param_11;\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    \n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }\n  local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);\n  local_6c = (undefined1 *)param_4[3];\n  ppuVar10 = &__DT_PLTGOT;\n  if (param_9 == (int *)param_4[2]) {\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }\n  local_5c = ppuVar10;\n  pppuVar13 = (undefined ***)auStack_7c;\n  local_60 = local_5c + 0xde;\n  piVar2 = *(int **)(*local_60 + 0xc);\n  if (piVar2 == (int *)0x0) {\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    \n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }\n  if ((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     ) {\n    return;\n  }\n  if ((*(byte *)(param_9 + 0xb) & 1) == 0) {\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }\n  else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }\n  if (*(char *)(iVar8 + 0xe0d) == '\0') {\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }\n  else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }\nLAB_00165ba8:\n  iVar8 = *param_9;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  pcVar3 = *(code **)(iVar8 + 0x14);\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;\n  iVar8 = (*pcVar3)();\n  if (iVar8 == 0) {\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }\n  local_64 = (char **)(local_58 & 0xff);\n  *(char ***)((int)pppuVar13 + -0x10) = local_64;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;\n  uVar9 = FUN_001630f0();\n  local_58 = param_4[0xd];\n  *(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;\n  *(undefined4 ***)((int)pppuVar13 + -8) = local_74;\n  *(int ***)((int)pppuVar13 + -0xc) = local_70;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n  *(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;\n  *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n  *(undefined4 **)((int)pppuVar13 + -0x20) = param_4;\n  *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;\n  cVar5 = FUN_00163520();\n  if (cVar5 == '\0') {\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }\n  if ((char)local_44 != '\0') {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }\n  return;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_00165a70(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,\n            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,\n            undefined **param_10,uint param_11)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,\n            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,\n            undefined **param_10,uint param_11)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined **param_3" type_identifier (pointer_declarator "**param_3" * (pointer_declarator "*param_3" * identifier))) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined1 *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "int *param_9" primitive_type (pointer_declarator "*param_9" * identifier)) , (parameter_declaration "undefined **param_10" type_identifier (pointer_declarator "**param_10" * (pointer_declarator "*param_10" * identifier))) , (parameter_declaration "uint param_11" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  byte bVar6;\n  char *pcVar7;\n  int iVar8;\n  undefined4 uVar9;\n  undefined **ppuVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  undefined ***pppuVar13;\n  bool bVar14;\n  undefined **ppuStack_84;\n  undefined **ppuStack_80;\n  undefined1 auStack_7c [4];\n  undefined4 *local_78;\n  undefined4 **local_74;\n  int **local_70;\n  undefined1 *local_6c;\n  uint local_68;\n  char **local_64;\n  undefined **local_60;\n  undefined **local_5c;\n  uint local_58;\n  undefined1 local_54 [8];\n  char *local_4c;\n  undefined4 local_48;\n  int *local_44;\n  int local_40;\n  uint local_3c;\n  undefined4 local_38;\n  undefined4 *local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_5c = &__DT_PLTGOT;\n  local_58 = param_7;\n  local_68 = param_11;\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    \n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }\n  local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);\n  local_6c = (undefined1 *)param_4[3];\n  ppuVar10 = &__DT_PLTGOT;\n  if (param_9 == (int *)param_4[2]) {\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }\n  local_5c = ppuVar10;\n  pppuVar13 = (undefined ***)auStack_7c;\n  local_60 = local_5c + 0xde;\n  piVar2 = *(int **)(*local_60 + 0xc);\n  if (piVar2 == (int *)0x0) {\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    \n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }\n  if ((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     ) {\n    return;\n  }\n  if ((*(byte *)(param_9 + 0xb) & 1) == 0) {\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }\n  else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }\n  if (*(char *)(iVar8 + 0xe0d) == '\0') {\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }\n  else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }\nLAB_00165ba8:\n  iVar8 = *param_9;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  pcVar3 = *(code **)(iVar8 + 0x14);\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;\n  iVar8 = (*pcVar3)();\n  if (iVar8 == 0) {\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }\n  local_64 = (char **)(local_58 & 0xff);\n  *(char ***)((int)pppuVar13 + -0x10) = local_64;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;\n  uVar9 = FUN_001630f0();\n  local_58 = param_4[0xd];\n  *(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;\n  *(undefined4 ***)((int)pppuVar13 + -8) = local_74;\n  *(int ***)((int)pppuVar13 + -0xc) = local_70;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n  *(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;\n  *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n  *(undefined4 **)((int)pppuVar13 + -0x20) = param_4;\n  *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;\n  cVar5 = FUN_00163520();\n  if (cVar5 == '\0') {\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }\n  if ((char)local_44 != '\0') {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined **ppuVar10;" type_identifier (pointer_declarator "**ppuVar10" * (pointer_declarator "*ppuVar10" * identifier)) ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined ***pppuVar13;" type_identifier (pointer_declarator "***pppuVar13" * (pointer_declarator "**pppuVar13" * (pointer_declarator "*pppuVar13" * identifier))) ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "undefined **ppuStack_84;" type_identifier (pointer_declarator "**ppuStack_84" * (pointer_declarator "*ppuStack_84" * identifier)) ;) (declaration "undefined **ppuStack_80;" type_identifier (pointer_declarator "**ppuStack_80" * (pointer_declarator "*ppuStack_80" * identifier)) ;) (declaration "undefined1 auStack_7c [4];" type_identifier (array_declarator "auStack_7c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "undefined4 **local_74;" type_identifier (pointer_declarator "**local_74" * (pointer_declarator "*local_74" * identifier)) ;) (declaration "int **local_70;" primitive_type (pointer_declarator "**local_70" * (pointer_declarator "*local_70" * identifier)) ;) (declaration "undefined1 *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "uint local_68;" type_identifier identifier ;) (declaration "char **local_64;" primitive_type (pointer_declarator "**local_64" * (pointer_declarator "*local_64" * identifier)) ;) (declaration "undefined **local_60;" type_identifier (pointer_declarator "**local_60" * (pointer_declarator "*local_60" * identifier)) ;) (declaration "undefined **local_5c;" type_identifier (pointer_declarator "**local_5c" * (pointer_declarator "*local_5c" * identifier)) ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "undefined1 local_54 [8];" type_identifier (array_declarator "local_54 [8]" identifier [ number_literal ]) ;) (declaration "char *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "int *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined1 *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (expression_statement "local_5c = &__DT_PLTGOT;" (assignment_expression "local_5c = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "local_58 = param_7;" (assignment_expression "local_58 = param_7" identifier = identifier) ;) (expression_statement "local_68 = param_11;" (assignment_expression "local_68 = param_11" identifier = identifier) ;) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    \n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    \n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }" { (expression_statement "ppuStack_84 = (undefined **)0x237534;" (assignment_expression "ppuStack_84 = (undefined **)0x237534" identifier = (cast_expression "(undefined **)0x237534" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "ppuStack_80 = (undefined **)param_2;" (assignment_expression "ppuStack_80 = (undefined **)param_2" identifier = (cast_expression "(undefined **)param_2" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "local_5c = &__DT_PLTGOT;" (assignment_expression "local_5c = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "FUN_0005f0b0("../../gold/symtab.h",0xaa);" (call_expression "FUN_0005f0b0("../../gold/symtab.h",0xaa)" identifier (argument_list "("../../gold/symtab.h",0xaa)" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal ))) ;) })) (expression_statement "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);" (assignment_expression "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01)" identifier = (cast_expression "(char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01)" ( (binary_expression "CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01" (call_expression "CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5)" identifier (argument_list "(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5)" ( (field_expression "local_64._1_3_" identifier . field_identifier) , (binary_expression "*(byte *)((int)param_4 + 0x2b) >> 5" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) ))) & number_literal) )))) ;) (expression_statement "local_6c = (undefined1 *)param_4[3];" (assignment_expression "local_6c = (undefined1 *)param_4[3]" identifier = (cast_expression "(undefined1 *)param_4[3]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) ;) (expression_statement "ppuVar10 = &__DT_PLTGOT;" (assignment_expression "ppuVar10 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (param_9 == (int *)param_4[2]) {\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(param_9 == (int *)param_4[2])" ( (binary_expression "param_9 == (int *)param_4[2]" identifier == (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) )) (compound_statement "{\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }" { (if_statement "if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;" if (parenthesized_expression "((byte)local_64 == '\0')" ( (binary_expression "(byte)local_64 == '\0'" (cast_expression "(byte)local_64" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }" { (expression_statement "local_5c = &__DT_PLTGOT;" (assignment_expression "local_5c = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "cVar5 = FUN_00122bf0(local_6c);" (assignment_expression "cVar5 = FUN_00122bf0(local_6c)" identifier = (call_expression "FUN_00122bf0(local_6c)" identifier (argument_list "(local_6c)" ( identifier )))) ;) (expression_statement "ppuVar10 = local_5c;" (assignment_expression "ppuVar10 = local_5c" identifier = identifier) ;) (if_statement "if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;" if (parenthesized_expression "((cVar5 == '\x01') || ((char)local_58 == '\0'))" ( (binary_expression "(cVar5 == '\x01') || ((char)local_58 == '\0')" (parenthesized_expression "(cVar5 == '\x01')" ( (binary_expression "cVar5 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) || (parenthesized_expression "((char)local_58 == '\0')" ( (binary_expression "(char)local_58 == '\0'" (cast_expression "(char)local_58" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00165abe;" goto statement_identifier ;)) }) (else_clause "else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;" else (if_statement "if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;" if (parenthesized_expression "((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c))))" ( (binary_expression "(local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))" (parenthesized_expression "(local_6c != (undefined1 *)0x0)" ( (binary_expression "local_6c != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))" ( (parenthesized_expression "(local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c))" ( (comma_expression "local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" (assignment_expression "local_58._0_1_ = (char)param_7" (field_expression "local_58._0_1_" identifier . field_identifier) = (cast_expression "(char)param_7" ( (type_descriptor "char" primitive_type) ) identifier)) , (comma_expression "bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" (assignment_expression "bVar14 = (char)local_58 != '\0'" identifier = (binary_expression "(char)local_58 != '\0'" (cast_expression "(char)local_58" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence '))) , (comma_expression "ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" (assignment_expression "ppuVar10 = local_5c" identifier = identifier) , (binary_expression "bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" identifier && (parenthesized_expression "(local_5c = &__DT_PLTGOT, param_6 == local_6c)" ( (comma_expression "local_5c = &__DT_PLTGOT, param_6 == local_6c" (assignment_expression "local_5c = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) , (binary_expression "param_6 == local_6c" identifier == identifier)) )))))) )) ))) )) (goto_statement "goto LAB_00165d65;" goto statement_identifier ;)))) }) (else_clause "else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }" else (compound_statement "{\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }" { (labeled_statement "LAB_00165abe:\n    local_5c = ppuVar10;" statement_identifier : (expression_statement "local_5c = ppuVar10;" (assignment_expression "local_5c = ppuVar10" identifier = identifier) ;)) (expression_statement "bVar14 = (char)local_58 == '\0';" (assignment_expression "bVar14 = (char)local_58 == '\0'" identifier = (binary_expression "(char)local_58 == '\0'" (cast_expression "(char)local_58" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "ppuVar10 = local_5c;" (assignment_expression "ppuVar10 = local_5c" identifier = identifier) ;) (if_statement "if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }" if (parenthesized_expression "((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1))))" ( (binary_expression "(param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))" (parenthesized_expression "(param_6 == (undefined1 *)0xfff1 && bVar14)" ( (binary_expression "param_6 == (undefined1 *)0xfff1 && bVar14" (binary_expression "param_6 == (undefined1 *)0xfff1" identifier == (cast_expression "(undefined1 *)0xfff1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) && (parenthesized_expression "(((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))" ( (parenthesized_expression "((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1))" ( (binary_expression "(byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)" (binary_expression "(byte)local_64 == '\0'" (cast_expression "(byte)local_64" ( (type_descriptor "byte" type_identifier) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(local_6c == (undefined1 *)0xfff1)" ( (binary_expression "local_6c == (undefined1 *)0xfff1" identifier == (cast_expression "(undefined1 *)0xfff1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) ))) )) (compound_statement "{\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }" { (labeled_statement "LAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);" statement_identifier : (expression_statement "uVar12 = *(uint *)(*param_5 + 4);" (assignment_expression "uVar12 = *(uint *)(*param_5 + 4)" identifier = (pointer_expression "*(uint *)(*param_5 + 4)" * (cast_expression "(uint *)(*param_5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 4)" ( (binary_expression "*param_5 + 4" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;)) (expression_statement "ppuVar10 = local_5c;" (assignment_expression "ppuVar10 = local_5c" identifier = identifier) ;) (if_statement "if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }" if (parenthesized_expression "((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc])" ( (binary_expression "(uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]" (parenthesized_expression "(uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18)" ( (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal)) )) == (subscript_expression "param_4[0xc]" identifier [ number_literal ])) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) }))) (expression_statement "local_5c = ppuVar10;" (assignment_expression "local_5c = ppuVar10" identifier = identifier) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "local_60 = local_5c + 0xde;" (assignment_expression "local_60 = local_5c + 0xde" identifier = (binary_expression "local_5c + 0xde" identifier + number_literal)) ;) (expression_statement "piVar2 = *(int **)(*local_60 + 0xc);" (assignment_expression "piVar2 = *(int **)(*local_60 + 0xc)" identifier = (pointer_expression "*(int **)(*local_60 + 0xc)" * (cast_expression "(int **)(*local_60 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_60 + 0xc)" ( (binary_expression "*local_60 + 0xc" (pointer_expression "*local_60" * identifier) + number_literal) ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    \n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    \n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }" { (expression_statement "ppuStack_84 = local_5c + -0x32ad3;" (assignment_expression "ppuStack_84 = local_5c + -0x32ad3" identifier = (binary_expression "local_5c + -0x32ad3" identifier + number_literal)) ;) (expression_statement "ppuStack_80 = (undefined **)piVar2;" (assignment_expression "ppuStack_80 = (undefined **)piVar2" identifier = (cast_expression "(undefined **)piVar2" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "FUN_0005f0b0(local_5c + -0x385a4,0x69);" (call_expression "FUN_0005f0b0(local_5c + -0x385a4,0x69)" identifier (argument_list "(local_5c + -0x385a4,0x69)" ( (binary_expression "local_5c + -0x385a4" identifier + number_literal) , number_literal ))) ;) })) (if_statement "if ((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     ) {\n    return;\n  }" if (parenthesized_expression "((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     )" ( (binary_expression "(*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')" (parenthesized_expression "(*(char *)(piVar2[1] + 0xd) != '\0')" ( (binary_expression "*(char *)(piVar2[1] + 0xd) != '\0'" (pointer_expression "*(char *)(piVar2[1] + 0xd)" * (cast_expression "(char *)(piVar2[1] + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar2[1] + 0xd)" ( (binary_expression "piVar2[1] + 0xd" (subscript_expression "piVar2[1]" identifier [ number_literal ]) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')" ( (comma_expression "cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0'" (assignment_expression "cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10)" identifier = (call_expression "(**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10)" (parenthesized_expression "(**(code **)(*piVar2 + 0xa4))" ( (pointer_expression "**(code **)(*piVar2 + 0xa4)" * (pointer_expression "*(code **)(*piVar2 + 0xa4)" * (cast_expression "(code **)(*piVar2 + 0xa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0xa4)" ( (binary_expression "*piVar2 + 0xa4" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,param_4,param_5,param_9,param_10)" ( identifier , identifier , identifier , identifier , identifier )))) , (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if ((*(byte *)(param_9 + 0xb) & 1) == 0) {\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" if (parenthesized_expression "((*(byte *)(param_9 + 0xb) & 1) == 0)" ( (binary_expression "(*(byte *)(param_9 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_9 + 0xb) & 1)" ( (binary_expression "*(byte *)(param_9 + 0xb) & 1" (pointer_expression "*(byte *)(param_9 + 0xb)" * (cast_expression "(byte *)(param_9 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_9 + 0xb)" ( (binary_expression "param_9 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" { (expression_statement "pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);" (assignment_expression "pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf)" identifier = (cast_expression "(char *)(*(byte *)(*param_5 + 0xc) & 0xf)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(byte *)(*param_5 + 0xc) & 0xf)" ( (binary_expression "*(byte *)(*param_5 + 0xc) & 0xf" (pointer_expression "*(byte *)(*param_5 + 0xc)" * (cast_expression "(byte *)(*param_5 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0xc)" ( (binary_expression "*param_5 + 0xc" (pointer_expression "*param_5" * identifier) + number_literal) )))) & number_literal) )))) ;) (if_statement "if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }" if (parenthesized_expression "(((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))" ( (binary_expression "((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')))" (parenthesized_expression "((char)pcVar7 == '\x05')" ( (binary_expression "(char)pcVar7 == '\x05'" (cast_expression "(char)pcVar7" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\x05'" ' escape_sequence ')) )) && (parenthesized_expression "(((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')))" ( (parenthesized_expression "((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))" ( (binary_expression "(char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')" (binary_expression "(char)local_58 != '\0'" (cast_expression "(char)local_58" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')" ( (comma_expression "pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'" (assignment_expression "pcVar7 = (char *)FUN_00122bf0(param_6)" identifier = (cast_expression "(char *)FUN_00122bf0(param_6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00122bf0(param_6)" identifier (argument_list "(param_6)" ( identifier ))))) , (binary_expression "(char)pcVar7 == '\0'" (cast_expression "(char)pcVar7" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence '))) ))) )) ))) )) (compound_statement "{\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }" { (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }" { (expression_statement "uVar9 = *(undefined4 *)(param_4[2] + 4);" (assignment_expression "uVar9 = *(undefined4 *)(param_4[2] + 4)" identifier = (pointer_expression "*(undefined4 *)(param_4[2] + 4)" * (cast_expression "(undefined4 *)(param_4[2] + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 4)" ( (binary_expression "param_4[2] + 4" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "FUN_00123e20(&local_34,param_4);" (call_expression "FUN_00123e20(&local_34,param_4)" identifier (argument_list "(&local_34,param_4)" ( (pointer_expression "&local_34" & identifier) , identifier ))) ;) (expression_statement "puVar4 = local_34;" (assignment_expression "puVar4 = local_34" identifier = identifier) ;) (expression_statement "uVar11 = gettext(local_5c + -0x32aad);" (assignment_expression "uVar11 = gettext(local_5c + -0x32aad)" identifier = (call_expression "gettext(local_5c + -0x32aad)" identifier (argument_list "(local_5c + -0x32aad)" ( (binary_expression "local_5c + -0x32aad" identifier + number_literal) )))) ;) (expression_statement "FUN_0005ad30(uVar11,puVar4,uVar9);" (call_expression "FUN_0005ad30(uVar11,puVar4,uVar9)" identifier (argument_list "(uVar11,puVar4,uVar9)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_34 == &local_2c) {\n          return;\n        }" if (parenthesized_expression "(local_34 == &local_2c)" ( (binary_expression "local_34 == &local_2c" identifier == (pointer_expression "&local_2c" & identifier)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "FUN_001807a0(local_34);" (call_expression "FUN_001807a0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_001661e5;" goto statement_identifier ;) })) (expression_statement "*(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;" (assignment_expression "*(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)param_4 + 0x2a) | 0x80" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "iVar8 = (**(code **)(*param_9 + 0x14))(param_9);" (assignment_expression "iVar8 = (**(code **)(*param_9 + 0x14))(param_9)" identifier = (call_expression "(**(code **)(*param_9 + 0x14))(param_9)" (parenthesized_expression "(**(code **)(*param_9 + 0x14))" ( (pointer_expression "**(code **)(*param_9 + 0x14)" * (pointer_expression "*(code **)(*param_9 + 0x14)" * (cast_expression "(code **)(*param_9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_9 + 0x14)" ( (binary_expression "*param_9 + 0x14" (pointer_expression "*param_9" * identifier) + number_literal) ))))) )) (argument_list "(param_9)" ( identifier )))) ;) }) (else_clause "else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" else (compound_statement "{\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" { (if_statement "if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }" if (parenthesized_expression "((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2))" ( (binary_expression "(param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)" (parenthesized_expression "(param_6 == (undefined1 *)0x0)" ( (binary_expression "param_6 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)" ( (binary_expression "(*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2" (binary_expression "(*(byte *)((int)param_4 + 0x29) & 3) - 1" (parenthesized_expression "(*(byte *)((int)param_4 + 0x29) & 3)" ( (binary_expression "*(byte *)((int)param_4 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_4 + 0x29)" * (cast_expression "(byte *)((int)param_4 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x29)" ( (binary_expression "(int)param_4 + 0x29" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) - number_literal) < number_literal) ))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;" (assignment_expression "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)param_4 + 0x2b) | 1" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "iVar8 = (**(code **)(*param_9 + 0x14))(param_9);" (assignment_expression "iVar8 = (**(code **)(*param_9 + 0x14))(param_9)" identifier = (call_expression "(**(code **)(*param_9 + 0x14))(param_9)" (parenthesized_expression "(**(code **)(*param_9 + 0x14))" ( (pointer_expression "**(code **)(*param_9 + 0x14)" * (pointer_expression "*(code **)(*param_9 + 0x14)" * (cast_expression "(code **)(*param_9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_9 + 0x14)" ( (binary_expression "*param_9 + 0x14" (pointer_expression "*param_9" * identifier) + number_literal) ))))) )) (argument_list "(param_9)" ( identifier )))) ;) }))) (if_statement "if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }" if (parenthesized_expression "((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0))" ( (binary_expression "(iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)" (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) && (parenthesized_expression "((*(byte *)(param_9 + 0xb) & 1) == 0)" ( (binary_expression "(*(byte *)(param_9 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_9 + 0xb) & 1)" ( (binary_expression "*(byte *)(param_9 + 0xb) & 1" (pointer_expression "*(byte *)(param_9 + 0xb)" * (cast_expression "(byte *)(param_9 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_9 + 0xb)" ( (binary_expression "param_9 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }" { (expression_statement "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;" (assignment_expression "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)param_4 + 0x2b) | 0x40" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) (if_statement "if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }\n  else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }" if (parenthesized_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0))" ( (binary_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)" (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)" ( (comma_expression "iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0" (assignment_expression "iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2])" identifier = (call_expression "(**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2])" (parenthesized_expression "(**(code **)(*(int *)param_4[2] + 0x14))" ( (pointer_expression "**(code **)(*(int *)param_4[2] + 0x14)" * (pointer_expression "*(code **)(*(int *)param_4[2] + 0x14)" * (cast_expression "(code **)(*(int *)param_4[2] + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_4[2] + 0x14)" ( (binary_expression "*(int *)param_4[2] + 0x14" (pointer_expression "*(int *)param_4[2]" * (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((int *)param_4[2])" ( (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) )))) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }" { (expression_statement "iVar8 = *(int *)(*local_60 + 8);" (assignment_expression "iVar8 = *(int *)(*local_60 + 8)" identifier = (pointer_expression "*(int *)(*local_60 + 8)" * (cast_expression "(int *)(*local_60 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_60 + 8)" ( (binary_expression "*local_60 + 8" (pointer_expression "*local_60" * identifier) + number_literal) ))))) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if (iVar8 == 0) goto LAB_00165d90;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00165d90;" goto statement_identifier ;)) (if_statement "if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }" if (parenthesized_expression "(*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0')" ( (binary_expression "*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0'" (pointer_expression "*(char *)(*(int *)(iVar8 + 0x593c) + 0x61)" * (cast_expression "(char *)(*(int *)(iVar8 + 0x593c) + 0x61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar8 + 0x593c) + 0x61)" ( (binary_expression "*(int *)(iVar8 + 0x593c) + 0x61" (pointer_expression "*(int *)(iVar8 + 0x593c)" * (cast_expression "(int *)(iVar8 + 0x593c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x593c)" ( (binary_expression "iVar8 + 0x593c" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }" { (if_statement "if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }" if (parenthesized_expression "(((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0'))))" ( (binary_expression "((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))" (parenthesized_expression "((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01'))" ( (binary_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')" (parenthesized_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0))" ( (binary_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)" (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)((int)param_4 + 0x2b) & 0x20" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" * (cast_expression "(byte *)((int)param_4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2b)" ( (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')" ( (comma_expression "cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01'" (assignment_expression "cVar5 = FUN_00122bf0(param_4[3])" identifier = (call_expression "FUN_00122bf0(param_4[3])" identifier (argument_list "(param_4[3])" ( (subscript_expression "param_4[3]" identifier [ number_literal ]) )))) , (binary_expression "cVar5 != '\x01'" identifier != (char_literal "'\x01'" ' escape_sequence '))) ))) )) || (parenthesized_expression "(((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))" ( (parenthesized_expression "((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0'))" ( (binary_expression "(char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')" (binary_expression "(char)local_58 != '\0'" (cast_expression "(char)local_58" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')" ( (comma_expression "cVar5 = FUN_00122bf0(param_6), cVar5 == '\0'" (assignment_expression "cVar5 = FUN_00122bf0(param_6)" identifier = (call_expression "FUN_00122bf0(param_6)" identifier (argument_list "(param_6)" ( identifier )))) , (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) ))) )) (compound_statement "{\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }" { (expression_statement "ppuStack_84 = param_10;" (assignment_expression "ppuStack_84 = param_10" identifier = identifier) ;) (expression_statement "FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);" (call_expression "FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9)" identifier (argument_list "(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9)" ( identifier , identifier , identifier , identifier , (binary_expression "local_58 & 0xff" identifier & number_literal) , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "local_58 = param_4[0xd];" (assignment_expression "local_58 = param_4[0xd]" identifier = (subscript_expression "param_4[0xd]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = param_4[0xc];" (assignment_expression "uVar12 = param_4[0xc]" identifier = (subscript_expression "param_4[0xc]" identifier [ number_literal ])) ;) (expression_statement "ppuStack_84 = param_10;" (assignment_expression "ppuStack_84 = param_10" identifier = identifier) ;) (expression_statement "FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);" (call_expression "FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9)" identifier (argument_list "(param_3,param_4,param_5,param_6,0,param_9)" ( identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }" if (parenthesized_expression "((uint)param_4[0xd] < local_58)" ( (binary_expression "(uint)param_4[0xd] < local_58" (cast_expression "(uint)param_4[0xd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0xd]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n        param_4[0xd] = local_58;\n      }" { (expression_statement "param_4[0xd] = local_58;" (assignment_expression "param_4[0xd] = local_58" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }" if (parenthesized_expression "(uVar12 <= (uint)param_4[0xc])" ( (binary_expression "uVar12 <= (uint)param_4[0xc]" identifier <= (cast_expression "(uint)param_4[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0xc]" identifier [ number_literal ]))) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "param_4[0xc] = uVar12;" (assignment_expression "param_4[0xc] = uVar12" (subscript_expression "param_4[0xc]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }" else (compound_statement "{\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }" { (expression_statement "iVar8 = *(int *)(*local_60 + 8);" (assignment_expression "iVar8 = *(int *)(*local_60 + 8)" identifier = (pointer_expression "*(int *)(*local_60 + 8)" * (cast_expression "(int *)(*local_60 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_60 + 8)" ( (binary_expression "*local_60 + 8" (pointer_expression "*local_60" * identifier) + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) goto LAB_00165d90;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00165d90;" goto statement_identifier ;)) }))) (if_statement "if (*(char *)(iVar8 + 0xe0d) == '\0') {\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }\n  else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar8 + 0xe0d) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0xe0d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0xe0d)" * (cast_expression "(char *)(iVar8 + 0xe0d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xe0d)" ( (binary_expression "iVar8 + 0xe0d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }" { (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) }) (else_clause "else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }" else (compound_statement "{\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "iVar8 = *param_5;" (assignment_expression "iVar8 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (if_statement "if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }" if (parenthesized_expression "((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2)" ( (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar8 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) >> number_literal) != number_literal) )) (compound_statement "{\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }" { (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;" if (parenthesized_expression "(*(byte *)(param_4 + 10) >> 4 != 2)" ( (binary_expression "*(byte *)(param_4 + 10) >> 4 != 2" (binary_expression "*(byte *)(param_4 + 10) >> 4" (pointer_expression "*(byte *)(param_4 + 10)" * (cast_expression "(byte *)(param_4 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) >> number_literal) != number_literal) )) (goto_statement "goto LAB_00165ba8;" goto statement_identifier ;)) })) (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }" if (parenthesized_expression "((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0))" ( (binary_expression "(((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)" (parenthesized_expression "(((byte)local_64 & param_8 != 0) != 0)" ( (binary_expression "((byte)local_64 & param_8 != 0) != 0" (parenthesized_expression "((byte)local_64 & param_8 != 0)" ( (binary_expression "(byte)local_64 & param_8 != 0" (cast_expression "(byte)local_64" ( (type_descriptor "byte" type_identifier) ) identifier) & (binary_expression "param_8 != 0" identifier != number_literal)) )) != number_literal) )) && (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)" ( (comma_expression "pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) , (binary_expression "local_6c != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }" { (expression_statement "uVar12 = *(uint *)(iVar8 + 8);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 8)" identifier = (pointer_expression "*(uint *)(iVar8 + 8)" * (cast_expression "(uint *)(iVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }" if (parenthesized_expression "((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0))" ( (binary_expression "(uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)" (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)" ( (comma_expression "pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) , (binary_expression "param_4[0xd] != 0" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }" { (expression_statement "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);" (assignment_expression "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f)" identifier = (cast_expression "(char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f)" ( (binary_expression "CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f" (call_expression "CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc))" identifier (argument_list "(local_64._1_3_,*(byte *)(iVar8 + 0xc))" ( (field_expression "local_64._1_3_" identifier . field_identifier) , (pointer_expression "*(byte *)(iVar8 + 0xc)" * (cast_expression "(byte *)(iVar8 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) ))) & number_literal) )))) ;) (if_statement "if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }" if (parenthesized_expression "(((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12))" ( (binary_expression "((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)" (parenthesized_expression "((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf))" ( (binary_expression "(byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)" (cast_expression "(byte)local_64" ( (type_descriptor "byte" type_identifier) ) identifier) != (parenthesized_expression "(*(byte *)(param_4 + 10) & 0xf)" ( (binary_expression "*(byte *)(param_4 + 10) & 0xf" (pointer_expression "*(byte *)(param_4 + 10)" * (cast_expression "(byte *)(param_4 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) & number_literal) ))) )) || (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)" ( (comma_expression "pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) , (binary_expression "param_4[0xd] != uVar12" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) != identifier)) ))) )) (compound_statement "{\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }" { (expression_statement "pcVar7 = (char *)*param_4;" (assignment_expression "pcVar7 = (char *)*param_4" identifier = (cast_expression "(char *)*param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }" if (parenthesized_expression "((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z'))" ( (binary_expression "(*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')" (parenthesized_expression "(*pcVar7 == '_')" ( (binary_expression "*pcVar7 == '_'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'_'" ' character ')) )) && (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')" ( (comma_expression "pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z'" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" identifier = (cast_expression "(undefined ***)auStack_7c" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) , (binary_expression "pcVar7[1] == 'Z'" (subscript_expression "pcVar7[1]" identifier [ number_literal ]) == (char_literal "'Z'" ' character '))) ))) )) (compound_statement "{\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }" { (expression_statement "uVar12 = *(uint *)(iVar8 + 4);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 4)" identifier = (pointer_expression "*(uint *)(iVar8 + 4)" * (cast_expression "(uint *)(iVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_44 = param_9;" (assignment_expression "local_44 = param_9" identifier = identifier) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;" (assignment_expression "local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (expression_statement "local_40 = param_8;" (assignment_expression "local_40 = param_8" identifier = identifier) ;) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }" { (labeled_statement "LAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;" statement_identifier : (expression_statement "ppuStack_84 = local_5c + -0x32ab8;" (assignment_expression "ppuStack_84 = local_5c + -0x32ab8" identifier = (binary_expression "local_5c + -0x32ab8" identifier + number_literal)) ;)) (expression_statement "ppuStack_80 = (undefined **)pcVar7;" (assignment_expression "ppuStack_80 = (undefined **)pcVar7" identifier = (cast_expression "(undefined **)pcVar7" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);" (call_expression "FUN_0005f0b0((int)local_5c + -0xe1673,0xa1)" identifier (argument_list "((int)local_5c + -0xe1673,0xa1)" ( (binary_expression "(int)local_5c + -0xe1673" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal ))) ;) })) (expression_statement "local_34 = (undefined4 *)param_4[2];" (assignment_expression "local_34 = (undefined4 *)param_4[2]" identifier = (cast_expression "(undefined4 *)param_4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = local_6c;" (assignment_expression "local_30 = local_6c" identifier = identifier) ;) (expression_statement "local_2c = param_4[0xc];" (assignment_expression "local_2c = param_4[0xc]" identifier = (subscript_expression "param_4[0xc]" identifier [ number_literal ])) ;) (expression_statement "ppuStack_80 = param_3;" (assignment_expression "ppuStack_80 = param_3" identifier = identifier) ;) (expression_statement "ppuStack_84 = param_3;" (assignment_expression "ppuStack_84 = param_3" identifier = identifier) ;) (expression_statement "local_64 = &local_4c;" (assignment_expression "local_64 = &local_4c" identifier = (pointer_expression "&local_4c" & identifier)) ;) (expression_statement "local_4c = pcVar7;" (assignment_expression "local_4c = pcVar7" identifier = identifier) ;) (expression_statement "local_48 = FUN_001646d0(param_3 + 0x47,local_64);" (assignment_expression "local_48 = FUN_001646d0(param_3 + 0x47,local_64)" identifier = (call_expression "FUN_001646d0(param_3 + 0x47,local_64)" identifier (argument_list "(param_3 + 0x47,local_64)" ( (binary_expression "param_3 + 0x47" identifier + number_literal) , identifier )))) ;) (expression_statement "local_6c = local_54;" (assignment_expression "local_6c = local_54" identifier = identifier) ;) (expression_statement "local_78 = &local_48;" (assignment_expression "local_78 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);" (call_expression "FUN_001650c0(local_6c,local_48,local_70,local_78,0,1)" identifier (argument_list "(local_6c,local_48,local_70,local_78,0,1)" ( identifier , identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "local_4c = (char *)*param_4;" (assignment_expression "local_4c = (char *)*param_4" identifier = (cast_expression "(char *)*param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "local_48 = FUN_001646d0(param_3 + 0x47,local_64);" (assignment_expression "local_48 = FUN_001646d0(param_3 + 0x47,local_64)" identifier = (call_expression "FUN_001646d0(param_3 + 0x47,local_64)" identifier (argument_list "(param_3 + 0x47,local_64)" ( (binary_expression "param_3 + 0x47" identifier + number_literal) , identifier )))) ;) (expression_statement "FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);" (call_expression "FUN_001650c0(local_6c,local_48,local_74,local_78,0,1)" identifier (argument_list "(local_6c,local_48,local_74,local_78,0,1)" ( identifier , identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "pppuVar13 = &ppuStack_84;" (assignment_expression "pppuVar13 = &ppuStack_84" identifier = (pointer_expression "&ppuStack_84" & identifier)) ;) })) })) })) })) }))) (labeled_statement "LAB_00165ba8:\n  iVar8 = *param_9;" statement_identifier : (expression_statement "iVar8 = *param_9;" (assignment_expression "iVar8 = *param_9" identifier = (pointer_expression "*param_9" * identifier)) ;)) (expression_statement "*(int **)((int)pppuVar13 + -0x10) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0x10) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0x10)" * (cast_expression "(int **)((int)pppuVar13 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar8 + 0x14);" (assignment_expression "pcVar3 = *(code **)(iVar8 + 0x14)" identifier = (pointer_expression "*(code **)(iVar8 + 0x14)" * (cast_expression "(code **)(iVar8 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = (*pcVar3)();" (assignment_expression "iVar8 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar8 == 0) {\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }" { (expression_statement "bVar6 = *(byte *)(*param_5 + 0xc);" (assignment_expression "bVar6 = *(byte *)(*param_5 + 0xc)" identifier = (pointer_expression "*(byte *)(*param_5 + 0xc)" * (cast_expression "(byte *)(*param_5 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0xc)" ( (binary_expression "*param_5 + 0xc" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }" else (compound_statement "{\n    bVar6 = *(byte *)(param_4 + 10);\n  }" { (expression_statement "bVar6 = *(byte *)(param_4 + 10);" (assignment_expression "bVar6 = *(byte *)(param_4 + 10)" identifier = (pointer_expression "*(byte *)(param_4 + 10)" * (cast_expression "(byte *)(param_4 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) ))))) ;) }))) (expression_statement "local_64 = (char **)(local_58 & 0xff);" (assignment_expression "local_64 = (char **)(local_58 & 0xff)" identifier = (cast_expression "(char **)(local_58 & 0xff)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_58 & 0xff)" ( (binary_expression "local_58 & 0xff" identifier & number_literal) )))) ;) (expression_statement "*(char ***)((int)pppuVar13 + -0x10) = local_64;" (assignment_expression "*(char ***)((int)pppuVar13 + -0x10) = local_64" (pointer_expression "*(char ***)((int)pppuVar13 + -0x10)" * (cast_expression "(char ***)((int)pppuVar13 + -0x10)" ( (type_descriptor "char ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = FUN_001630f0();" (assignment_expression "uVar9 = FUN_001630f0()" identifier = (call_expression "FUN_001630f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_58 = param_4[0xd];" (assignment_expression "local_58 = param_4[0xd]" identifier = (subscript_expression "param_4[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;" (assignment_expression "*(uint *)((int)pppuVar13 + -4) = local_68 & 0xff" (pointer_expression "*(uint *)((int)pppuVar13 + -4)" * (cast_expression "(uint *)((int)pppuVar13 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -4)" ( (binary_expression "(int)pppuVar13 + -4" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_68 & 0xff" identifier & number_literal)) ;) (expression_statement "*(undefined4 ***)((int)pppuVar13 + -8) = local_74;" (assignment_expression "*(undefined4 ***)((int)pppuVar13 + -8) = local_74" (pointer_expression "*(undefined4 ***)((int)pppuVar13 + -8)" * (cast_expression "(undefined4 ***)((int)pppuVar13 + -8)" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -8)" ( (binary_expression "(int)pppuVar13 + -8" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)((int)pppuVar13 + -0xc) = local_70;" (assignment_expression "*(int ***)((int)pppuVar13 + -0xc) = local_70" (pointer_expression "*(int ***)((int)pppuVar13 + -0xc)" * (cast_expression "(int ***)((int)pppuVar13 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0xc)" ( (binary_expression "(int)pppuVar13 + -0xc" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)pppuVar13 + -0x10) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0x10) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0x10)" * (cast_expression "(int **)((int)pppuVar13 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;" (assignment_expression "*(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf" (pointer_expression "*(uint *)((int)pppuVar13 + -0x18)" * (cast_expression "(uint *)((int)pppuVar13 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x18)" ( (binary_expression "(int)pppuVar13 + -0x18" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "bVar6 & 0xf" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x1c)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x1c)" ( (binary_expression "(int)pppuVar13 + -0x1c" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)pppuVar13 + -0x20) = param_4;" (assignment_expression "*(undefined4 **)((int)pppuVar13 + -0x20) = param_4" (pointer_expression "*(undefined4 **)((int)pppuVar13 + -0x20)" * (cast_expression "(undefined4 **)((int)pppuVar13 + -0x20)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x20)" ( (binary_expression "(int)pppuVar13 + -0x20" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x24)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x24)" ( (binary_expression "(int)pppuVar13 + -0x24" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = FUN_00163520();" (assignment_expression "cVar5 = FUN_00163520()" identifier = (call_expression "FUN_00163520()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 == '\0') {\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }" { (expression_statement "iVar8 = *param_5;" (assignment_expression "iVar8 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (if_statement "if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" if (parenthesized_expression "((char)local_44 != '\0')" ( (binary_expression "(char)local_44 != '\0'" (cast_expression "(char)local_44" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" { (expression_statement "uVar12 = *(uint *)(iVar8 + 8);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 8)" identifier = (pointer_expression "*(uint *)(iVar8 + 8)" * (cast_expression "(uint *)(iVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (if_statement "if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }" if (parenthesized_expression "(local_58 < uVar12)" ( (binary_expression "local_58 < uVar12" identifier < identifier) )) (compound_statement "{\n        param_4[0xd] = uVar12;\n      }" { (expression_statement "param_4[0xd] = uVar12;" (assignment_expression "param_4[0xd] = uVar12" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar12 = *(uint *)(iVar8 + 4);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 4)" identifier = (pointer_expression "*(uint *)(iVar8 + 4)" * (cast_expression "(uint *)(iVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (if_statement "if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }" if (parenthesized_expression "((uint)param_4[0xc] < uVar12)" ( (binary_expression "(uint)param_4[0xc] < uVar12" (cast_expression "(uint)param_4[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0xc]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n        param_4[0xc] = uVar12;\n      }" { (expression_statement "param_4[0xc] = uVar12;" (assignment_expression "param_4[0xc] = uVar12" (subscript_expression "param_4[0xc]" identifier [ number_literal ]) = identifier) ;) })) })) (if_statement "if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }" if (parenthesized_expression "((char)local_34 != '\0')" ( (binary_expression "(char)local_34 != '\0'" (cast_expression "(char)local_34" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }" { (if_statement "if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }" if (parenthesized_expression "(((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0))" ( (binary_expression "((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)" (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 1) == 0)" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 1)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 1" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 2) != 0)" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 2) != 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 2)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 2" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }" { (expression_statement "*(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;" (assignment_expression "*(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02'" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) | (binary_expression "((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02'" (parenthesized_expression "((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2)" ( (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar8 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) >> number_literal) == number_literal) )) * (char_literal "'\x02'" ' escape_sequence '))) | number_literal)) ;) })) })) (expression_statement "bVar6 = *(byte *)(iVar8 + 0xd) & 3;" (assignment_expression "bVar6 = *(byte *)(iVar8 + 0xd) & 3" identifier = (binary_expression "*(byte *)(iVar8 + 0xd) & 3" (pointer_expression "*(byte *)(iVar8 + 0xd)" * (cast_expression "(byte *)(iVar8 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xd)" ( (binary_expression "iVar8 + 0xd" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }" if (parenthesized_expression "((*(byte *)(iVar8 + 0xd) & 3) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0xd) & 3) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0xd) & 3)" ( (binary_expression "*(byte *)(iVar8 + 0xd) & 3" (pointer_expression "*(byte *)(iVar8 + 0xd)" * (cast_expression "(byte *)(iVar8 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xd)" ( (binary_expression "iVar8 + 0xd" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }" { (expression_statement "bVar1 = *(byte *)((int)param_4 + 0x29);" (assignment_expression "bVar1 = *(byte *)((int)param_4 + 0x29)" identifier = (pointer_expression "*(byte *)((int)param_4 + 0x29)" * (cast_expression "(byte *)((int)param_4 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x29)" ( (binary_expression "(int)param_4 + 0x29" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }" if (parenthesized_expression "(((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3)))" ( (binary_expression "((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))" (parenthesized_expression "((bVar1 & 3) == 0)" ( (binary_expression "(bVar1 & 3) == 0" (parenthesized_expression "(bVar1 & 3)" ( (binary_expression "bVar1 & 3" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(bVar6 < (bVar1 & 3))" ( (binary_expression "bVar6 < (bVar1 & 3)" identifier < (parenthesized_expression "(bVar1 & 3)" ( (binary_expression "bVar1 & 3" identifier & number_literal) ))) ))) )) (compound_statement "{\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }" { (expression_statement "*(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;" (assignment_expression "*(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc" (pointer_expression "*(byte *)((int)param_4 + 0x29)" * (cast_expression "(byte *)((int)param_4 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x29)" ( (binary_expression "(int)param_4 + 0x29" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "bVar6 | bVar1 & 0xfc" identifier | (binary_expression "bVar1 & 0xfc" identifier & number_literal))) ;) })) })) }) (else_clause "else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }" else (compound_statement "{\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }" { (expression_statement "bVar6 = *(byte *)(param_4 + 10);" (assignment_expression "bVar6 = *(byte *)(param_4 + 10)" identifier = (pointer_expression "*(byte *)(param_4 + 10)" * (cast_expression "(byte *)(param_4 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = param_4[0xc];" (assignment_expression "uVar12 = param_4[0xc]" identifier = (subscript_expression "param_4[0xc]" identifier [ number_literal ])) ;) (expression_statement "*(undefined ***)((int)pppuVar13 + -8) = param_10;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -8) = param_10" (pointer_expression "*(undefined ***)((int)pppuVar13 + -8)" * (cast_expression "(undefined ***)((int)pppuVar13 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -8)" ( (binary_expression "(int)pppuVar13 + -8" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)pppuVar13 + -0xc) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0xc) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0xc)" * (cast_expression "(int **)((int)pppuVar13 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0xc)" ( (binary_expression "(int)pppuVar13 + -0xc" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(char ***)((int)pppuVar13 + -0x10) = local_64;" (assignment_expression "*(char ***)((int)pppuVar13 + -0x10) = local_64" (pointer_expression "*(char ***)((int)pppuVar13 + -0x10)" * (cast_expression "(char ***)((int)pppuVar13 + -0x10)" ( (type_descriptor "char ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)((int)pppuVar13 + -0x14) = param_6;" (assignment_expression "*(undefined1 **)((int)pppuVar13 + -0x14) = param_6" (pointer_expression "*(undefined1 **)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined1 **)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)pppuVar13 + -0x18) = param_5;" (assignment_expression "*(int **)((int)pppuVar13 + -0x18) = param_5" (pointer_expression "*(int **)((int)pppuVar13 + -0x18)" * (cast_expression "(int **)((int)pppuVar13 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x18)" ( (binary_expression "(int)pppuVar13 + -0x18" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;" (assignment_expression "*(undefined4 **)((int)pppuVar13 + -0x1c) = param_4" (pointer_expression "*(undefined4 **)((int)pppuVar13 + -0x1c)" * (cast_expression "(undefined4 **)((int)pppuVar13 + -0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x1c)" ( (binary_expression "(int)pppuVar13 + -0x1c" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)((int)pppuVar13 + -0x20) = param_3;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -0x20) = param_3" (pointer_expression "*(undefined ***)((int)pppuVar13 + -0x20)" * (cast_expression "(undefined ***)((int)pppuVar13 + -0x20)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0x20)" ( (binary_expression "(int)pppuVar13 + -0x20" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);" (assignment_expression "local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4)" identifier = (call_expression "CONCAT31(local_68._1_3_,bVar6 >> 4)" identifier (argument_list "(local_68._1_3_,bVar6 >> 4)" ( (field_expression "local_68._1_3_" identifier . field_identifier) , (binary_expression "bVar6 >> 4" identifier >> number_literal) )))) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x24)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x24)" ( (binary_expression "(int)pppuVar13 + -0x24" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001648f0();" (call_expression "FUN_001648f0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" if (parenthesized_expression "((char)local_44 != '\0')" ( (binary_expression "(char)local_44 != '\0'" (cast_expression "(char)local_44" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" { (if_statement "if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }" if (parenthesized_expression "((uint)param_4[0xd] < local_58)" ( (binary_expression "(uint)param_4[0xd] < local_58" (cast_expression "(uint)param_4[0xd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0xd]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n        param_4[0xd] = local_58;\n      }" { (expression_statement "param_4[0xd] = local_58;" (assignment_expression "param_4[0xd] = local_58" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }" if (parenthesized_expression "((uint)param_4[0xc] < uVar12)" ( (binary_expression "(uint)param_4[0xc] < uVar12" (cast_expression "(uint)param_4[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_4[0xc]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n        param_4[0xc] = uVar12;\n      }" { (expression_statement "param_4[0xc] = uVar12;" (assignment_expression "param_4[0xc] = uVar12" (subscript_expression "param_4[0xc]" identifier [ number_literal ]) = identifier) ;) })) })) (if_statement "if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }" if (parenthesized_expression "(((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0))))" ( (binary_expression "((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))" (parenthesized_expression "((char)local_34 != '\0')" ( (binary_expression "(char)local_34 != '\0'" (cast_expression "(char)local_34" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))" ( (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0))" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)" (binary_expression "(*(byte *)(param_4 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 1)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 1" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 2) != 0)" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 2) != 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 2)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 2" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) ))) )) (compound_statement "{\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }" { (expression_statement "*(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;" (assignment_expression "*(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02'" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) | (binary_expression "((char)local_68 == '\x02') * '\x02'" (parenthesized_expression "((char)local_68 == '\x02')" ( (binary_expression "(char)local_68 == '\x02'" (cast_expression "(char)local_68" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) * (char_literal "'\x02'" ' escape_sequence '))) | number_literal)) ;) })) }))) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }" if (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" ( (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }" { (expression_statement "bVar6 = *(byte *)(param_4[2] + 0x2c);" (assignment_expression "bVar6 = *(byte *)(param_4[2] + 0x2c)" identifier = (pointer_expression "*(byte *)(param_4[2] + 0x2c)" * (cast_expression "(byte *)(param_4[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 0x2c)" ( (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }" if (parenthesized_expression "((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0))" ( (binary_expression "(((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)" (parenthesized_expression "(((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0'))" ( (binary_expression "((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')" (parenthesized_expression "((bVar6 & 1) != 0)" ( (binary_expression "(bVar6 & 1) != 0" (parenthesized_expression "(bVar6 & 1)" ( (binary_expression "bVar6 & 1" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((char)*(byte *)((int)param_4 + 0x2a) < '\0')" ( (binary_expression "(char)*(byte *)((int)param_4 + 0x2a) < '\0'" (cast_expression "(char)*(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)((int)param_4 + 0x2a)" * (cast_expression "(byte *)((int)param_4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 0x2a)" ( (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 2) == 0)" ( (binary_expression "(*(byte *)(param_4 + 0xb) & 2) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 2)" ( (binary_expression "*(byte *)(param_4 + 0xb) & 2" (pointer_expression "*(byte *)(param_4 + 0xb)" * (cast_expression "(byte *)(param_4 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xb)" ( (binary_expression "param_4 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }" { (expression_statement "*(byte *)(param_4[2] + 0x2c) = bVar6 | 2;" (assignment_expression "*(byte *)(param_4[2] + 0x2c) = bVar6 | 2" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" * (cast_expression "(byte *)(param_4[2] + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[2] + 0x2c)" ( (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "bVar6 | 2" identifier | number_literal)) ;) })) })) (if_statement "if ((char)local_44 != '\0') {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }" if (parenthesized_expression "((char)local_44 != '\0')" ( (binary_expression "(char)local_44 != '\0'" (cast_expression "(char)local_44" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }" { (expression_statement "iVar8 = *(int *)(*local_60 + 8);" (assignment_expression "iVar8 = *(int *)(*local_60 + 8)" identifier = (pointer_expression "*(int *)(*local_60 + 8)" * (cast_expression "(int *)(*local_60 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_60 + 8)" ( (binary_expression "*local_60 + 8" (pointer_expression "*local_60" * identifier) + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }" { (labeled_statement "LAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;" statement_identifier : (expression_statement "*(int *)((int)pppuVar13 + -4) = iVar8;" (assignment_expression "*(int *)((int)pppuVar13 + -4) = iVar8" (pointer_expression "*(int *)((int)pppuVar13 + -4)" * (cast_expression "(int *)((int)pppuVar13 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -4)" ( (binary_expression "(int)pppuVar13 + -4" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba" (pointer_expression "*(undefined ***)((int)pppuVar13 + -8)" * (cast_expression "(undefined ***)((int)pppuVar13 + -8)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -8)" ( (binary_expression "(int)pppuVar13 + -8" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_5c + -0x32aba" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0xc)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0xc)" ( (binary_expression "(int)pppuVar13 + -0xc" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4" (pointer_expression "*(undefined ***)((int)pppuVar13 + -0x10)" * (cast_expression "(undefined ***)((int)pppuVar13 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_5c + -0x385a4" identifier + number_literal)) ;) (expression_statement "*(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;" (assignment_expression "*(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9" (pointer_expression "*(undefined **)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined **)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&UNK_00165da9" & identifier)) ;) (expression_statement "FUN_0005f0b0();" (call_expression "FUN_0005f0b0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }" if (parenthesized_expression "(*(char *)(iVar8 + 0x43e5) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x43e5) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x43e5)" * (cast_expression "(char *)(iVar8 + 0x43e5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x43e5)" ( (binary_expression "iVar8 + 0x43e5" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }" { (expression_statement "uVar12 = *(uint *)(*param_5 + 8);" (assignment_expression "uVar12 = *(uint *)(*param_5 + 8)" identifier = (pointer_expression "*(uint *)(*param_5 + 8)" * (cast_expression "(uint *)(*param_5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 8)" ( (binary_expression "*param_5 + 8" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" if (parenthesized_expression "(uVar12 < local_58)" ( (binary_expression "uVar12 < local_58" identifier < identifier) )) (compound_statement "{\n        ppuVar10 = local_5c + -0x32a9f;\n      }" { (expression_statement "ppuVar10 = local_5c + -0x32a9f;" (assignment_expression "ppuVar10 = local_5c + -0x32a9f" identifier = (binary_expression "local_5c + -0x32a9f" identifier + number_literal)) ;) }) (else_clause "else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" else (if_statement "if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" if (parenthesized_expression "(local_58 < uVar12)" ( (binary_expression "local_58 < uVar12" identifier < identifier) )) (compound_statement "{\n        ppuVar10 = local_5c + -0x32a94;\n      }" { (expression_statement "ppuVar10 = local_5c + -0x32a94;" (assignment_expression "ppuVar10 = local_5c + -0x32a94" identifier = (binary_expression "local_5c + -0x32a94" identifier + number_literal)) ;) }) (else_clause "else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" else (compound_statement "{\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" { (expression_statement "ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);" (assignment_expression "ppuVar10 = (undefined **)((int)local_5c + -0xcaa26)" identifier = (cast_expression "(undefined **)((int)local_5c + -0xcaa26)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_5c + -0xcaa26)" ( (binary_expression "(int)local_5c + -0xcaa26" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))))) (expression_statement "*(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10" (pointer_expression "*(undefined ***)((int)pppuVar13 + -0x10)" * (cast_expression "(undefined ***)((int)pppuVar13 + -0x10)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = gettext();" (assignment_expression "uVar9 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int **)((int)pppuVar13 + -0x10) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0x10) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0x10)" * (cast_expression "(int **)((int)pppuVar13 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x10)" ( (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x14)" ( (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 **)((int)pppuVar13 + -0x18) = param_4;" (assignment_expression "*(undefined4 **)((int)pppuVar13 + -0x18) = param_4" (pointer_expression "*(undefined4 **)((int)pppuVar13 + -0x18)" * (cast_expression "(undefined4 **)((int)pppuVar13 + -0x18)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar13 + -0x18)" ( (binary_expression "(int)pppuVar13 + -0x18" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x1c)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x1c)" ( (binary_expression "(int)pppuVar13 + -0x1c" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x20) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x20) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x20)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x20)" ( (binary_expression "(int)pppuVar13 + -0x20" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x24)" * (cast_expression "(undefined4 *)((int)pppuVar13 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar13 + -0x24)" ( (binary_expression "(int)pppuVar13 + -0x24" (cast_expression "(int)pppuVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00163350();" (call_expression "FUN_00163350()" identifier (argument_list "()" ( ))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * (pointer_declarator * IDENT))) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * (pointer_declarator * IDENT))) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (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 (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) >> LIT) ))) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (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 IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) ))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence '))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression & IDENT)) , (binary_expression IDENT == IDENT)) )))))) )) ))) )) (goto_statement goto statement_identifier ;)))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) && (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )) == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (return_statement return ;) })) })) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (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 , IDENT , IDENT , IDENT , IDENT )))) , (binary_expression IDENT != (char_literal ' escape_sequence '))) ))) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence '))) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 == (pointer_expression & IDENT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) | LIT)) ;) (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 )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) - LIT) < LIT) ))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) , (binary_expression IDENT != (char_literal ' escape_sequence '))) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT == (char_literal ' escape_sequence '))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT & LIT) , IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) != LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & (binary_expression IDENT != LIT)) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) , (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) , (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) })) })) })) }))) (labeled_statement statement_identifier : (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 (cast_expression ( (type_descriptor TYPE) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (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 * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) == LIT) )) * (char_literal ' escape_sequence '))) | LIT)) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression IDENT < (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT | (binary_expression IDENT & LIT))) ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) * (char_literal ' escape_sequence '))) | LIT)) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) < (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (binary_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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (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 { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (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 * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (return_statement return ;) })))
(function_definition "void __regparm2\nFUN_00165a70(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,\n            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,\n            undefined **param_10,uint param_11)\n\n{\n  byte bVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  byte bVar6;\n  char *pcVar7;\n  int iVar8;\n  undefined4 uVar9;\n  undefined **ppuVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  undefined ***pppuVar13;\n  bool bVar14;\n  undefined **ppuStack_84;\n  undefined **ppuStack_80;\n  undefined1 auStack_7c [4];\n  undefined4 *local_78;\n  undefined4 **local_74;\n  int **local_70;\n  undefined1 *local_6c;\n  uint local_68;\n  char **local_64;\n  undefined **local_60;\n  undefined **local_5c;\n  uint local_58;\n  undefined1 local_54 [8];\n  char *local_4c;\n  undefined4 local_48;\n  int *local_44;\n  int local_40;\n  uint local_3c;\n  undefined4 local_38;\n  undefined4 *local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_5c = &__DT_PLTGOT;\n  local_58 = param_7;\n  local_68 = param_11;\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    \n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }\n  local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);\n  local_6c = (undefined1 *)param_4[3];\n  ppuVar10 = &__DT_PLTGOT;\n  if (param_9 == (int *)param_4[2]) {\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }\n  local_5c = ppuVar10;\n  pppuVar13 = (undefined ***)auStack_7c;\n  local_60 = local_5c + 0xde;\n  piVar2 = *(int **)(*local_60 + 0xc);\n  if (piVar2 == (int *)0x0) {\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    \n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }\n  if ((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     ) {\n    return;\n  }\n  if ((*(byte *)(param_9 + 0xb) & 1) == 0) {\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }\n  else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }\n  if (*(char *)(iVar8 + 0xe0d) == '\0') {\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }\n  else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }\nLAB_00165ba8:\n  iVar8 = *param_9;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  pcVar3 = *(code **)(iVar8 + 0x14);\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;\n  iVar8 = (*pcVar3)();\n  if (iVar8 == 0) {\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }\n  local_64 = (char **)(local_58 & 0xff);\n  *(char ***)((int)pppuVar13 + -0x10) = local_64;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;\n  uVar9 = FUN_001630f0();\n  local_58 = param_4[0xd];\n  *(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;\n  *(undefined4 ***)((int)pppuVar13 + -8) = local_74;\n  *(int ***)((int)pppuVar13 + -0xc) = local_70;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n  *(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;\n  *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n  *(undefined4 **)((int)pppuVar13 + -0x20) = param_4;\n  *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;\n  cVar5 = FUN_00163520();\n  if (cVar5 == '\0') {\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }\n  if ((char)local_44 != '\0') {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }\n  return;\n}" (primitive_type "void") (ERROR "__regparm2" (identifier "__regparm2")) (function_declarator "FUN_00165a70(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,\n            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,\n            undefined **param_10,uint param_11)" (identifier "FUN_00165a70") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined **param_3,undefined4 *param_4,\n            int *param_5,undefined1 *param_6,uint param_7,int param_8,int *param_9,\n            undefined **param_10,uint param_11)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined **param_3" (type_identifier "undefined") (pointer_declarator "**param_3" (* "*") (pointer_declarator "*param_3" (* "*") (identifier "param_3")))) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "undefined1 *param_6" (type_identifier "undefined1") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) (, ",") (parameter_declaration "uint param_7" (type_identifier "uint") (identifier "param_7")) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) (, ",") (parameter_declaration "int *param_9" (primitive_type "int") (pointer_declarator "*param_9" (* "*") (identifier "param_9"))) (, ",") (parameter_declaration "undefined **param_10" (type_identifier "undefined") (pointer_declarator "**param_10" (* "*") (pointer_declarator "*param_10" (* "*") (identifier "param_10")))) (, ",") (parameter_declaration "uint param_11" (type_identifier "uint") (identifier "param_11")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  byte bVar6;\n  char *pcVar7;\n  int iVar8;\n  undefined4 uVar9;\n  undefined **ppuVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  undefined ***pppuVar13;\n  bool bVar14;\n  undefined **ppuStack_84;\n  undefined **ppuStack_80;\n  undefined1 auStack_7c [4];\n  undefined4 *local_78;\n  undefined4 **local_74;\n  int **local_70;\n  undefined1 *local_6c;\n  uint local_68;\n  char **local_64;\n  undefined **local_60;\n  undefined **local_5c;\n  uint local_58;\n  undefined1 local_54 [8];\n  char *local_4c;\n  undefined4 local_48;\n  int *local_44;\n  int local_40;\n  uint local_3c;\n  undefined4 local_38;\n  undefined4 *local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_5c = &__DT_PLTGOT;\n  local_58 = param_7;\n  local_68 = param_11;\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    \n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }\n  local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);\n  local_6c = (undefined1 *)param_4[3];\n  ppuVar10 = &__DT_PLTGOT;\n  if (param_9 == (int *)param_4[2]) {\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }\n  local_5c = ppuVar10;\n  pppuVar13 = (undefined ***)auStack_7c;\n  local_60 = local_5c + 0xde;\n  piVar2 = *(int **)(*local_60 + 0xc);\n  if (piVar2 == (int *)0x0) {\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    \n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }\n  if ((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     ) {\n    return;\n  }\n  if ((*(byte *)(param_9 + 0xb) & 1) == 0) {\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }\n  if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }\n  else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }\n  if (*(char *)(iVar8 + 0xe0d) == '\0') {\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }\n  else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }\nLAB_00165ba8:\n  iVar8 = *param_9;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  pcVar3 = *(code **)(iVar8 + 0x14);\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;\n  iVar8 = (*pcVar3)();\n  if (iVar8 == 0) {\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }\n  local_64 = (char **)(local_58 & 0xff);\n  *(char ***)((int)pppuVar13 + -0x10) = local_64;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;\n  uVar9 = FUN_001630f0();\n  local_58 = param_4[0xd];\n  *(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;\n  *(undefined4 ***)((int)pppuVar13 + -8) = local_74;\n  *(int ***)((int)pppuVar13 + -0xc) = local_70;\n  *(int **)((int)pppuVar13 + -0x10) = param_9;\n  *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n  *(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;\n  *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n  *(undefined4 **)((int)pppuVar13 + -0x20) = param_4;\n  *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;\n  cVar5 = FUN_00163520();\n  if (cVar5 == '\0') {\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }\n  if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }\n  if ((char)local_44 != '\0') {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined **ppuVar10;" (type_identifier "undefined") (pointer_declarator "**ppuVar10" (* "*") (pointer_declarator "*ppuVar10" (* "*") (identifier "ppuVar10"))) (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "undefined ***pppuVar13;" (type_identifier "undefined") (pointer_declarator "***pppuVar13" (* "*") (pointer_declarator "**pppuVar13" (* "*") (pointer_declarator "*pppuVar13" (* "*") (identifier "pppuVar13")))) (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "undefined **ppuStack_84;" (type_identifier "undefined") (pointer_declarator "**ppuStack_84" (* "*") (pointer_declarator "*ppuStack_84" (* "*") (identifier "ppuStack_84"))) (; ";")) (declaration "undefined **ppuStack_80;" (type_identifier "undefined") (pointer_declarator "**ppuStack_80" (* "*") (pointer_declarator "*ppuStack_80" (* "*") (identifier "ppuStack_80"))) (; ";")) (declaration "undefined1 auStack_7c [4];" (type_identifier "undefined1") (array_declarator "auStack_7c [4]" (identifier "auStack_7c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 *local_78;" (type_identifier "undefined4") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "undefined4 **local_74;" (type_identifier "undefined4") (pointer_declarator "**local_74" (* "*") (pointer_declarator "*local_74" (* "*") (identifier "local_74"))) (; ";")) (declaration "int **local_70;" (primitive_type "int") (pointer_declarator "**local_70" (* "*") (pointer_declarator "*local_70" (* "*") (identifier "local_70"))) (; ";")) (declaration "undefined1 *local_6c;" (type_identifier "undefined1") (pointer_declarator "*local_6c" (* "*") (identifier "local_6c")) (; ";")) (declaration "uint local_68;" (type_identifier "uint") (identifier "local_68") (; ";")) (declaration "char **local_64;" (primitive_type "char") (pointer_declarator "**local_64" (* "*") (pointer_declarator "*local_64" (* "*") (identifier "local_64"))) (; ";")) (declaration "undefined **local_60;" (type_identifier "undefined") (pointer_declarator "**local_60" (* "*") (pointer_declarator "*local_60" (* "*") (identifier "local_60"))) (; ";")) (declaration "undefined **local_5c;" (type_identifier "undefined") (pointer_declarator "**local_5c" (* "*") (pointer_declarator "*local_5c" (* "*") (identifier "local_5c"))) (; ";")) (declaration "uint local_58;" (type_identifier "uint") (identifier "local_58") (; ";")) (declaration "undefined1 local_54 [8];" (type_identifier "undefined1") (array_declarator "local_54 [8]" (identifier "local_54") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "char *local_4c;" (primitive_type "char") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "int *local_44;" (primitive_type "int") (pointer_declarator "*local_44" (* "*") (identifier "local_44")) (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "undefined4 *local_34;" (type_identifier "undefined4") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "undefined1 *local_30;" (type_identifier "undefined1") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (expression_statement "local_5c = &__DT_PLTGOT;" (assignment_expression "local_5c = &__DT_PLTGOT" (identifier "local_5c") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "local_58 = param_7;" (assignment_expression "local_58 = param_7" (identifier "local_58") (= "=") (identifier "param_7")) (; ";")) (expression_statement "local_68 = param_11;" (assignment_expression "local_68 = param_11" (identifier "local_68") (= "=") (identifier "param_11")) (; ";")) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    \n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }" (if "if") (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    ppuStack_84 = (undefined **)0x237534;\n    ppuStack_80 = (undefined **)param_2;\n    local_5c = &__DT_PLTGOT;\n                    \n    FUN_0005f0b0("../../gold/symtab.h",0xaa);\n  }" ({ "{") (expression_statement "ppuStack_84 = (undefined **)0x237534;" (assignment_expression "ppuStack_84 = (undefined **)0x237534" (identifier "ppuStack_84") (= "=") (cast_expression "(undefined **)0x237534" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x237534"))) (; ";")) (expression_statement "ppuStack_80 = (undefined **)param_2;" (assignment_expression "ppuStack_80 = (undefined **)param_2" (identifier "ppuStack_80") (= "=") (cast_expression "(undefined **)param_2" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_2"))) (; ";")) (expression_statement "local_5c = &__DT_PLTGOT;" (assignment_expression "local_5c = &__DT_PLTGOT" (identifier "local_5c") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "FUN_0005f0b0("../../gold/symtab.h",0xaa);" (call_expression "FUN_0005f0b0("../../gold/symtab.h",0xaa)" (identifier "FUN_0005f0b0") (argument_list "("../../gold/symtab.h",0xaa)" (( "(") (string_literal ""../../gold/symtab.h"" (" """) (string_content "../../gold/symtab.h") (" """)) (, ",") (number_literal "0xaa") () ")"))) (; ";")) (} "}"))) (expression_statement "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);" (assignment_expression "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01)" (identifier "local_64") (= "=") (cast_expression "(char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01)" (( "(") (binary_expression "CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01" (call_expression "CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5)" (identifier "CONCAT31") (argument_list "(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5)" (( "(") (field_expression "local_64._1_3_" (identifier "local_64") (. ".") (field_identifier "_1_3_")) (, ",") (binary_expression "*(byte *)((int)param_4 + 0x2b) >> 5" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2b)" (( "(") (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2b")) () ")")))) (>> ">>") (number_literal "5")) () ")"))) (& "&") (number_literal "0xffffff01")) () ")")))) (; ";")) (expression_statement "local_6c = (undefined1 *)param_4[3];" (assignment_expression "local_6c = (undefined1 *)param_4[3]" (identifier "local_6c") (= "=") (cast_expression "(undefined1 *)param_4[3]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "ppuVar10 = &__DT_PLTGOT;" (assignment_expression "ppuVar10 = &__DT_PLTGOT" (identifier "ppuVar10") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (if_statement "if (param_9 == (int *)param_4[2]) {\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }\n  else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(param_9 == (int *)param_4[2])" (( "(") (binary_expression "param_9 == (int *)param_4[2]" (identifier "param_9") (== "==") (cast_expression "(int *)param_4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n    if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;\n  }" ({ "{") (if_statement "if ((byte)local_64 == '\0') {\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }\n    else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;" (if "if") (parenthesized_expression "((byte)local_64 == '\0')" (( "(") (binary_expression "(byte)local_64 == '\0'" (cast_expression "(byte)local_64" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_64")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      local_5c = &__DT_PLTGOT;\n      cVar5 = FUN_00122bf0(local_6c);\n      ppuVar10 = local_5c;\n      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;\n    }" ({ "{") (expression_statement "local_5c = &__DT_PLTGOT;" (assignment_expression "local_5c = &__DT_PLTGOT" (identifier "local_5c") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "cVar5 = FUN_00122bf0(local_6c);" (assignment_expression "cVar5 = FUN_00122bf0(local_6c)" (identifier "cVar5") (= "=") (call_expression "FUN_00122bf0(local_6c)" (identifier "FUN_00122bf0") (argument_list "(local_6c)" (( "(") (identifier "local_6c") () ")")))) (; ";")) (expression_statement "ppuVar10 = local_5c;" (assignment_expression "ppuVar10 = local_5c" (identifier "ppuVar10") (= "=") (identifier "local_5c")) (; ";")) (if_statement "if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;" (if "if") (parenthesized_expression "((cVar5 == '\x01') || ((char)local_58 == '\0'))" (( "(") (binary_expression "(cVar5 == '\x01') || ((char)local_58 == '\0')" (parenthesized_expression "(cVar5 == '\x01')" (( "(") (binary_expression "cVar5 == '\x01'" (identifier "cVar5") (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (|| "||") (parenthesized_expression "((char)local_58 == '\0')" (( "(") (binary_expression "(char)local_58 == '\0'" (cast_expression "(char)local_58" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_58")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_00165abe;" (goto "goto") (statement_identifier "LAB_00165abe") (; ";"))) (} "}")) (else_clause "else if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;" (else "else") (if_statement "if ((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;" (if "if") (parenthesized_expression "((local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c))))" (( "(") (binary_expression "(local_6c != (undefined1 *)0x0) &&\n            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))" (parenthesized_expression "(local_6c != (undefined1 *)0x0)" (( "(") (binary_expression "local_6c != (undefined1 *)0x0" (identifier "local_6c") (!= "!=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))" (( "(") (parenthesized_expression "(local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c))" (( "(") (comma_expression "local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" (assignment_expression "local_58._0_1_ = (char)param_7" (field_expression "local_58._0_1_" (identifier "local_58") (. ".") (field_identifier "_0_1_")) (= "=") (cast_expression "(char)param_7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_7"))) (, ",") (comma_expression "bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" (assignment_expression "bVar14 = (char)local_58 != '\0'" (identifier "bVar14") (= "=") (binary_expression "(char)local_58 != '\0'" (cast_expression "(char)local_58" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_58")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (, ",") (comma_expression "ppuVar10 = local_5c,\n             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" (assignment_expression "ppuVar10 = local_5c" (identifier "ppuVar10") (= "=") (identifier "local_5c")) (, ",") (binary_expression "bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)" (identifier "bVar14") (&& "&&") (parenthesized_expression "(local_5c = &__DT_PLTGOT, param_6 == local_6c)" (( "(") (comma_expression "local_5c = &__DT_PLTGOT, param_6 == local_6c" (assignment_expression "local_5c = &__DT_PLTGOT" (identifier "local_5c") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (, ",") (binary_expression "param_6 == local_6c" (identifier "param_6") (== "==") (identifier "local_6c"))) () ")")))))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_00165d65;" (goto "goto") (statement_identifier "LAB_00165d65") (; ";"))))) (} "}")) (else_clause "else {\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }" (else "else") (compound_statement "{\nLAB_00165abe:\n    local_5c = ppuVar10;\n    bVar14 = (char)local_58 == '\0';\n    ppuVar10 = local_5c;\n    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_00165abe:\n    local_5c = ppuVar10;" (statement_identifier "LAB_00165abe") (: ":") (expression_statement "local_5c = ppuVar10;" (assignment_expression "local_5c = ppuVar10" (identifier "local_5c") (= "=") (identifier "ppuVar10")) (; ";"))) (expression_statement "bVar14 = (char)local_58 == '\0';" (assignment_expression "bVar14 = (char)local_58 == '\0'" (identifier "bVar14") (= "=") (binary_expression "(char)local_58 == '\0'" (cast_expression "(char)local_58" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_58")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (expression_statement "ppuVar10 = local_5c;" (assignment_expression "ppuVar10 = local_5c" (identifier "ppuVar10") (= "=") (identifier "local_5c")) (; ";")) (if_statement "if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }" (if "if") (parenthesized_expression "((param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1))))" (( "(") (binary_expression "(param_6 == (undefined1 *)0xfff1 && bVar14) &&\n       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))" (parenthesized_expression "(param_6 == (undefined1 *)0xfff1 && bVar14)" (( "(") (binary_expression "param_6 == (undefined1 *)0xfff1 && bVar14" (binary_expression "param_6 == (undefined1 *)0xfff1" (identifier "param_6") (== "==") (cast_expression "(undefined1 *)0xfff1" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xfff1"))) (&& "&&") (identifier "bVar14")) () ")")) (&& "&&") (parenthesized_expression "(((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))" (( "(") (parenthesized_expression "((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1))" (( "(") (binary_expression "(byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)" (binary_expression "(byte)local_64 == '\0'" (cast_expression "(byte)local_64" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_64")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(local_6c == (undefined1 *)0xfff1)" (( "(") (binary_expression "local_6c == (undefined1 *)0xfff1" (identifier "local_6c") (== "==") (cast_expression "(undefined1 *)0xfff1" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xfff1"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\nLAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);\n      ppuVar10 = local_5c;\n      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }\n    }" ({ "{") (labeled_statement "LAB_00165d65:\n      uVar12 = *(uint *)(*param_5 + 4);" (statement_identifier "LAB_00165d65") (: ":") (expression_statement "uVar12 = *(uint *)(*param_5 + 4);" (assignment_expression "uVar12 = *(uint *)(*param_5 + 4)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(*param_5 + 4)" (* "*") (cast_expression "(uint *)(*param_5 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_5 + 4)" (( "(") (binary_expression "*param_5 + 4" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "ppuVar10 = local_5c;" (assignment_expression "ppuVar10 = local_5c" (identifier "ppuVar10") (= "=") (identifier "local_5c")) (; ";")) (if_statement "if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]) {\n        return;\n      }" (if "if") (parenthesized_expression "((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc])" (( "(") (binary_expression "(uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==\n          param_4[0xc]" (parenthesized_expression "(uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18)" (( "(") (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" (identifier "uVar12") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" (( "(") (binary_expression "uVar12 & 0xff0000" (identifier "uVar12") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" (( "(") (binary_expression "uVar12 & 0xff00" (identifier "uVar12") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar12 << 0x18" (identifier "uVar12") (<< "<<") (number_literal "0x18"))) () ")")) (== "==") (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]"))) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "local_5c = ppuVar10;" (assignment_expression "local_5c = ppuVar10" (identifier "local_5c") (= "=") (identifier "ppuVar10")) (; ";")) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" (identifier "pppuVar13") (= "=") (cast_expression "(undefined ***)auStack_7c" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_7c"))) (; ";")) (expression_statement "local_60 = local_5c + 0xde;" (assignment_expression "local_60 = local_5c + 0xde" (identifier "local_60") (= "=") (binary_expression "local_5c + 0xde" (identifier "local_5c") (+ "+") (number_literal "0xde"))) (; ";")) (expression_statement "piVar2 = *(int **)(*local_60 + 0xc);" (assignment_expression "piVar2 = *(int **)(*local_60 + 0xc)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(*local_60 + 0xc)" (* "*") (cast_expression "(int **)(*local_60 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_60 + 0xc)" (( "(") (binary_expression "*local_60 + 0xc" (pointer_expression "*local_60" (* "*") (identifier "local_60")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (piVar2 == (int *)0x0) {\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    \n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }" (if "if") (parenthesized_expression "(piVar2 == (int *)0x0)" (( "(") (binary_expression "piVar2 == (int *)0x0" (identifier "piVar2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    ppuStack_84 = local_5c + -0x32ad3;\n    ppuStack_80 = (undefined **)piVar2;\n                    \n    FUN_0005f0b0(local_5c + -0x385a4,0x69);\n  }" ({ "{") (expression_statement "ppuStack_84 = local_5c + -0x32ad3;" (assignment_expression "ppuStack_84 = local_5c + -0x32ad3" (identifier "ppuStack_84") (= "=") (binary_expression "local_5c + -0x32ad3" (identifier "local_5c") (+ "+") (number_literal "-0x32ad3"))) (; ";")) (expression_statement "ppuStack_80 = (undefined **)piVar2;" (assignment_expression "ppuStack_80 = (undefined **)piVar2" (identifier "ppuStack_80") (= "=") (cast_expression "(undefined **)piVar2" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "piVar2"))) (; ";")) (expression_statement "FUN_0005f0b0(local_5c + -0x385a4,0x69);" (call_expression "FUN_0005f0b0(local_5c + -0x385a4,0x69)" (identifier "FUN_0005f0b0") (argument_list "(local_5c + -0x385a4,0x69)" (( "(") (binary_expression "local_5c + -0x385a4" (identifier "local_5c") (+ "+") (number_literal "-0x385a4")) (, ",") (number_literal "0x69") () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     ) {\n    return;\n  }" (if "if") (parenthesized_expression "((*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')\n     )" (( "(") (binary_expression "(*(char *)(piVar2[1] + 0xd) != '\0') &&\n     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')" (parenthesized_expression "(*(char *)(piVar2[1] + 0xd) != '\0')" (( "(") (binary_expression "*(char *)(piVar2[1] + 0xd) != '\0'" (pointer_expression "*(char *)(piVar2[1] + 0xd)" (* "*") (cast_expression "(char *)(piVar2[1] + 0xd)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar2[1] + 0xd)" (( "(") (binary_expression "piVar2[1] + 0xd" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xd")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')" (( "(") (comma_expression "cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0'" (assignment_expression "cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10)" (identifier "cVar5") (= "=") (call_expression "(**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10)" (parenthesized_expression "(**(code **)(*piVar2 + 0xa4))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0xa4)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0xa4)" (* "*") (cast_expression "(code **)(*piVar2 + 0xa4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0xa4)" (( "(") (binary_expression "*piVar2 + 0xa4" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0xa4")) () ")"))))) () ")")) (argument_list "(piVar2,param_4,param_5,param_9,param_10)" (( "(") (identifier "piVar2") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_9") (, ",") (identifier "param_10") () ")")))) (, ",") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_9 + 0xb) & 1) == 0) {\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }\n  else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_9 + 0xb) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_9 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_9 + 0xb) & 1)" (( "(") (binary_expression "*(byte *)(param_9 + 0xb) & 1" (pointer_expression "*(byte *)(param_9 + 0xb)" (* "*") (cast_expression "(byte *)(param_9 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_9 + 0xb)" (( "(") (binary_expression "param_9 + 0xb" (identifier "param_9") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);\n    if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }\n    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" ({ "{") (expression_statement "pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);" (assignment_expression "pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf)" (identifier "pcVar7") (= "=") (cast_expression "(char *)(*(byte *)(*param_5 + 0xc) & 0xf)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(byte *)(*param_5 + 0xc) & 0xf)" (( "(") (binary_expression "*(byte *)(*param_5 + 0xc) & 0xf" (pointer_expression "*(byte *)(*param_5 + 0xc)" (* "*") (cast_expression "(byte *)(*param_5 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_5 + 0xc)" (( "(") (binary_expression "*param_5 + 0xc" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "0xf")) () ")")))) (; ";")) (if_statement "if (((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))\n    {\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }" (if "if") (parenthesized_expression "(((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))" (( "(") (binary_expression "((char)pcVar7 == '\x05') &&\n       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')))" (parenthesized_expression "((char)pcVar7 == '\x05')" (( "(") (binary_expression "(char)pcVar7 == '\x05'" (cast_expression "(char)pcVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "pcVar7")) (== "==") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')))" (( "(") (parenthesized_expression "((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))" (( "(") (binary_expression "(char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')" (binary_expression "(char)local_58 != '\0'" (cast_expression "(char)local_58" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_58")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "(pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0')" (( "(") (comma_expression "pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'" (assignment_expression "pcVar7 = (char *)FUN_00122bf0(param_6)" (identifier "pcVar7") (= "=") (cast_expression "(char *)FUN_00122bf0(param_6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00122bf0(param_6)" (identifier "FUN_00122bf0") (argument_list "(param_6)" (( "(") (identifier "param_6") () ")"))))) (, ",") (binary_expression "(char)pcVar7 == '\0'" (cast_expression "(char)pcVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "pcVar7")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }\n      goto LAB_001661e5;\n    }" ({ "{") (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }" (if "if") (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar9 = *(undefined4 *)(param_4[2] + 4);\n        FUN_00123e20(&local_34,param_4);\n        puVar4 = local_34;\n        uVar11 = gettext(local_5c + -0x32aad);\n                    \n        FUN_0005ad30(uVar11,puVar4,uVar9);\n        if (local_34 == &local_2c) {\n          return;\n        }\n        FUN_001807a0(local_34);\n        return;\n      }" ({ "{") (expression_statement "uVar9 = *(undefined4 *)(param_4[2] + 4);" (assignment_expression "uVar9 = *(undefined4 *)(param_4[2] + 4)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(param_4[2] + 4)" (* "*") (cast_expression "(undefined4 *)(param_4[2] + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4[2] + 4)" (( "(") (binary_expression "param_4[2] + 4" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "FUN_00123e20(&local_34,param_4);" (call_expression "FUN_00123e20(&local_34,param_4)" (identifier "FUN_00123e20") (argument_list "(&local_34,param_4)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "puVar4 = local_34;" (assignment_expression "puVar4 = local_34" (identifier "puVar4") (= "=") (identifier "local_34")) (; ";")) (expression_statement "uVar11 = gettext(local_5c + -0x32aad);" (assignment_expression "uVar11 = gettext(local_5c + -0x32aad)" (identifier "uVar11") (= "=") (call_expression "gettext(local_5c + -0x32aad)" (identifier "gettext") (argument_list "(local_5c + -0x32aad)" (( "(") (binary_expression "local_5c + -0x32aad" (identifier "local_5c") (+ "+") (number_literal "-0x32aad")) () ")")))) (; ";")) (expression_statement "FUN_0005ad30(uVar11,puVar4,uVar9);" (call_expression "FUN_0005ad30(uVar11,puVar4,uVar9)" (identifier "FUN_0005ad30") (argument_list "(uVar11,puVar4,uVar9)" (( "(") (identifier "uVar11") (, ",") (identifier "puVar4") (, ",") (identifier "uVar9") () ")"))) (; ";")) (if_statement "if (local_34 == &local_2c) {\n          return;\n        }" (if "if") (parenthesized_expression "(local_34 == &local_2c)" (( "(") (binary_expression "local_34 == &local_2c" (identifier "local_34") (== "==") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_001807a0(local_34);" (call_expression "FUN_001807a0(local_34)" (identifier "FUN_001807a0") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (goto_statement "goto LAB_001661e5;" (goto "goto") (statement_identifier "LAB_001661e5") (; ";")) (} "}"))) (expression_statement "*(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;" (assignment_expression "*(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")")))) (= "=") (binary_expression "*(byte *)((int)param_4 + 0x2a) | 0x80" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")")))) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "iVar8 = (**(code **)(*param_9 + 0x14))(param_9);" (assignment_expression "iVar8 = (**(code **)(*param_9 + 0x14))(param_9)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*param_9 + 0x14))(param_9)" (parenthesized_expression "(**(code **)(*param_9 + 0x14))" (( "(") (pointer_expression "**(code **)(*param_9 + 0x14)" (* "*") (pointer_expression "*(code **)(*param_9 + 0x14)" (* "*") (cast_expression "(code **)(*param_9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_9 + 0x14)" (( "(") (binary_expression "*param_9 + 0x14" (pointer_expression "*param_9" (* "*") (identifier "param_9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(param_9)" (( "(") (identifier "param_9") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" (else "else") (compound_statement "{\n    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;\n    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);\n  }" ({ "{") (if_statement "if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {\n      return;\n    }" (if "if") (parenthesized_expression "((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2))" (( "(") (binary_expression "(param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)" (parenthesized_expression "(param_6 == (undefined1 *)0x0)" (( "(") (binary_expression "param_6 == (undefined1 *)0x0" (identifier "param_6") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2" (binary_expression "(*(byte *)((int)param_4 + 0x29) & 3) - 1" (parenthesized_expression "(*(byte *)((int)param_4 + 0x29) & 3)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x29) & 3" (pointer_expression "*(byte *)((int)param_4 + 0x29)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x29)" (( "(") (binary_expression "(int)param_4 + 0x29" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x29")) () ")")))) (& "&") (number_literal "3")) () ")")) (- "-") (number_literal "1")) (< "<") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;" (assignment_expression "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2b)" (( "(") (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2b")) () ")")))) (= "=") (binary_expression "*(byte *)((int)param_4 + 0x2b) | 1" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2b)" (( "(") (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2b")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (expression_statement "iVar8 = (**(code **)(*param_9 + 0x14))(param_9);" (assignment_expression "iVar8 = (**(code **)(*param_9 + 0x14))(param_9)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*param_9 + 0x14))(param_9)" (parenthesized_expression "(**(code **)(*param_9 + 0x14))" (( "(") (pointer_expression "**(code **)(*param_9 + 0x14)" (* "*") (pointer_expression "*(code **)(*param_9 + 0x14)" (* "*") (cast_expression "(code **)(*param_9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_9 + 0x14)" (( "(") (binary_expression "*param_9 + 0x14" (pointer_expression "*param_9" (* "*") (identifier "param_9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(param_9)" (( "(") (identifier "param_9") () ")")))) (; ";")) (} "}")))) (if_statement "if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }" (if "if") (parenthesized_expression "((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0))" (( "(") (binary_expression "(iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)" (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_9 + 0xb) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_9 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_9 + 0xb) & 1)" (( "(") (binary_expression "*(byte *)(param_9 + 0xb) & 1" (pointer_expression "*(byte *)(param_9 + 0xb)" (* "*") (cast_expression "(byte *)(param_9 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_9 + 0xb)" (( "(") (binary_expression "param_9 + 0xb" (identifier "param_9") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;\n  }" ({ "{") (expression_statement "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;" (assignment_expression "*(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2b)" (( "(") (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2b")) () ")")))) (= "=") (binary_expression "*(byte *)((int)param_4 + 0x2b) | 0x40" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2b)" (( "(") (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2b")) () ")")))) (| "|") (number_literal "0x40"))) (; ";")) (} "}"))) (if_statement "if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }\n  else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }" (if "if") (parenthesized_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0))" (( "(") (binary_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&\n     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)" (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)" (( "(") (comma_expression "iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0" (assignment_expression "iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2])" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2])" (parenthesized_expression "(**(code **)(*(int *)param_4[2] + 0x14))" (( "(") (pointer_expression "**(code **)(*(int *)param_4[2] + 0x14)" (* "*") (pointer_expression "*(code **)(*(int *)param_4[2] + 0x14)" (* "*") (cast_expression "(code **)(*(int *)param_4[2] + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_4[2] + 0x14)" (( "(") (binary_expression "*(int *)param_4[2] + 0x14" (pointer_expression "*(int *)param_4[2]" (* "*") (cast_expression "(int *)param_4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")))) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "((int *)param_4[2])" (( "(") (cast_expression "(int *)param_4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))) () ")")))) (, ",") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    iVar8 = *(int *)(*local_60 + 8);\n    pppuVar13 = (undefined ***)auStack_7c;\n    if (iVar8 == 0) goto LAB_00165d90;\n    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }\n  }" ({ "{") (expression_statement "iVar8 = *(int *)(*local_60 + 8);" (assignment_expression "iVar8 = *(int *)(*local_60 + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(*local_60 + 8)" (* "*") (cast_expression "(int *)(*local_60 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_60 + 8)" (( "(") (binary_expression "*local_60 + 8" (pointer_expression "*local_60" (* "*") (identifier "local_60")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" (identifier "pppuVar13") (= "=") (cast_expression "(undefined ***)auStack_7c" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_7c"))) (; ";")) (if_statement "if (iVar8 == 0) goto LAB_00165d90;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00165d90;" (goto "goto") (statement_identifier "LAB_00165d90") (; ";"))) (if_statement "if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0')" (( "(") (binary_expression "*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0'" (pointer_expression "*(char *)(*(int *)(iVar8 + 0x593c) + 0x61)" (* "*") (cast_expression "(char *)(*(int *)(iVar8 + 0x593c) + 0x61)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar8 + 0x593c) + 0x61)" (( "(") (binary_expression "*(int *)(iVar8 + 0x593c) + 0x61" (pointer_expression "*(int *)(iVar8 + 0x593c)" (* "*") (cast_expression "(int *)(iVar8 + 0x593c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x593c)" (( "(") (binary_expression "iVar8 + 0x593c" (identifier "iVar8") (+ "+") (number_literal "0x593c")) () ")")))) (+ "+") (number_literal "0x61")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }\n      local_58 = param_4[0xd];\n      uVar12 = param_4[0xc];\n      ppuStack_84 = param_10;\n      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }\n      param_4[0xc] = uVar12;\n      return;\n    }" ({ "{") (if_statement "if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }" (if "if") (parenthesized_expression "(((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0'))))" (( "(") (binary_expression "((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||\n         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))" (parenthesized_expression "((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01'))" (( "(") (binary_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||\n          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')" (parenthesized_expression "(((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0))" (( "(") (binary_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||\n           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)" (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2b) & 0x20)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x2b) & 0x20" (pointer_expression "*(byte *)((int)param_4 + 0x2b)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2b)" (( "(") (binary_expression "(int)param_4 + 0x2b" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2b")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')" (( "(") (comma_expression "cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01'" (assignment_expression "cVar5 = FUN_00122bf0(param_4[3])" (identifier "cVar5") (= "=") (call_expression "FUN_00122bf0(param_4[3])" (identifier "FUN_00122bf0") (argument_list "(param_4[3])" (( "(") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")) () ")")))) (, ",") (binary_expression "cVar5 != '\x01'" (identifier "cVar5") (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))" (( "(") (parenthesized_expression "((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0'))" (( "(") (binary_expression "(char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')" (binary_expression "(char)local_58 != '\0'" (cast_expression "(char)local_58" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_58")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "(cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')" (( "(") (comma_expression "cVar5 = FUN_00122bf0(param_6), cVar5 == '\0'" (assignment_expression "cVar5 = FUN_00122bf0(param_6)" (identifier "cVar5") (= "=") (call_expression "FUN_00122bf0(param_6)" (identifier "FUN_00122bf0") (argument_list "(param_6)" (( "(") (identifier "param_6") () ")")))) (, ",") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        ppuStack_84 = param_10;\n        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);\n        return;\n      }" ({ "{") (expression_statement "ppuStack_84 = param_10;" (assignment_expression "ppuStack_84 = param_10" (identifier "ppuStack_84") (= "=") (identifier "param_10")) (; ";")) (expression_statement "FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);" (call_expression "FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9)" (identifier "FUN_001648f0") (argument_list "(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (binary_expression "local_58 & 0xff" (identifier "local_58") (& "&") (number_literal "0xff")) (, ",") (identifier "param_9") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_58 = param_4[0xd];" (assignment_expression "local_58 = param_4[0xd]" (identifier "local_58") (= "=") (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "uVar12 = param_4[0xc];" (assignment_expression "uVar12 = param_4[0xc]" (identifier "uVar12") (= "=") (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "ppuStack_84 = param_10;" (assignment_expression "ppuStack_84 = param_10" (identifier "ppuStack_84") (= "=") (identifier "param_10")) (; ";")) (expression_statement "FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);" (call_expression "FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9)" (identifier "FUN_001648f0") (argument_list "(param_3,param_4,param_5,param_6,0,param_9)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (number_literal "0") (, ",") (identifier "param_9") () ")"))) (; ";")) (if_statement "if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }" (if "if") (parenthesized_expression "((uint)param_4[0xd] < local_58)" (( "(") (binary_expression "(uint)param_4[0xd] < local_58" (cast_expression "(uint)param_4[0xd]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]"))) (< "<") (identifier "local_58")) () ")")) (compound_statement "{\n        param_4[0xd] = local_58;\n      }" ({ "{") (expression_statement "param_4[0xd] = local_58;" (assignment_expression "param_4[0xd] = local_58" (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "local_58")) (; ";")) (} "}"))) (if_statement "if (uVar12 <= (uint)param_4[0xc]) {\n        return;\n      }" (if "if") (parenthesized_expression "(uVar12 <= (uint)param_4[0xc])" (( "(") (binary_expression "uVar12 <= (uint)param_4[0xc]" (identifier "uVar12") (<= "<=") (cast_expression "(uint)param_4[0xc]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]")))) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "param_4[0xc] = uVar12;" (assignment_expression "param_4[0xc] = uVar12" (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }" (else "else") (compound_statement "{\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) goto LAB_00165d90;\n  }" ({ "{") (expression_statement "iVar8 = *(int *)(*local_60 + 8);" (assignment_expression "iVar8 = *(int *)(*local_60 + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(*local_60 + 8)" (* "*") (cast_expression "(int *)(*local_60 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_60 + 8)" (( "(") (binary_expression "*local_60 + 8" (pointer_expression "*local_60" (* "*") (identifier "local_60")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar8 == 0) goto LAB_00165d90;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00165d90;" (goto "goto") (statement_identifier "LAB_00165d90") (; ";"))) (} "}")))) (if_statement "if (*(char *)(iVar8 + 0xe0d) == '\0') {\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }\n  else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0xe0d) == '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0xe0d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0xe0d)" (* "*") (cast_expression "(char *)(iVar8 + 0xe0d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xe0d)" (( "(") (binary_expression "iVar8 + 0xe0d" (identifier "iVar8") (+ "+") (number_literal "0xe0d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n  }" ({ "{") (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" (identifier "local_74") (= "=") (pointer_expression "&local_34" (& "&") (identifier "local_34"))) (; ";")) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" (identifier "local_70") (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" (identifier "pppuVar13") (= "=") (cast_expression "(undefined ***)auStack_7c" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_7c"))) (; ";")) (} "}")) (else_clause "else {\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }" (else "else") (compound_statement "{\n    iVar8 = *param_5;\n    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }\n    local_74 = &local_34;\n    local_70 = &local_44;\n    pppuVar13 = (undefined ***)auStack_7c;\n    if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "iVar8 = *param_5;" (assignment_expression "iVar8 = *param_5" (identifier "iVar8") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (if_statement "if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }" (if "if") (parenthesized_expression "((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2)" (( "(") (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(iVar8 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xc)" (( "(") (binary_expression "iVar8 + 0xc" (identifier "iVar8") (+ "+") (number_literal "0xc")) () ")")))) (>> ">>") (number_literal "4")) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n      local_74 = &local_34;\n      local_70 = &local_44;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;\n    }" ({ "{") (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" (identifier "local_74") (= "=") (pointer_expression "&local_34" (& "&") (identifier "local_34"))) (; ";")) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" (identifier "local_70") (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" (identifier "pppuVar13") (= "=") (cast_expression "(undefined ***)auStack_7c" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_7c"))) (; ";")) (if_statement "if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;" (if "if") (parenthesized_expression "(*(byte *)(param_4 + 10) >> 4 != 2)" (( "(") (binary_expression "*(byte *)(param_4 + 10) >> 4 != 2" (binary_expression "*(byte *)(param_4 + 10) >> 4" (pointer_expression "*(byte *)(param_4 + 10)" (* "*") (cast_expression "(byte *)(param_4 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 10)" (( "(") (binary_expression "param_4 + 10" (identifier "param_4") (+ "+") (number_literal "10")) () ")")))) (>> ">>") (number_literal "4")) (!= "!=") (number_literal "2")) () ")")) (goto_statement "goto LAB_00165ba8;" (goto "goto") (statement_identifier "LAB_00165ba8") (; ";"))) (} "}"))) (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" (identifier "local_74") (= "=") (pointer_expression "&local_34" (& "&") (identifier "local_34"))) (; ";")) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" (identifier "local_70") (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" (identifier "pppuVar13") (= "=") (cast_expression "(undefined ***)auStack_7c" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_7c"))) (; ";")) (if_statement "if ((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "((((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0))" (( "(") (binary_expression "(((byte)local_64 & param_8 != 0) != 0) &&\n       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)" (parenthesized_expression "(((byte)local_64 & param_8 != 0) != 0)" (( "(") (binary_expression "((byte)local_64 & param_8 != 0) != 0" (parenthesized_expression "((byte)local_64 & param_8 != 0)" (( "(") (binary_expression "(byte)local_64 & param_8 != 0" (cast_expression "(byte)local_64" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_64")) (& "&") (binary_expression "param_8 != 0" (identifier "param_8") (!= "!=") (number_literal "0"))) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)" (( "(") (comma_expression "pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" (identifier "pppuVar13") (= "=") (cast_expression "(undefined ***)auStack_7c" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_7c"))) (, ",") (binary_expression "local_6c != (undefined1 *)0x0" (identifier "local_6c") (!= "!=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      pppuVar13 = (undefined ***)auStack_7c;\n      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "uVar12 = *(uint *)(iVar8 + 8);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 8)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(iVar8 + 8)" (* "*") (cast_expression "(uint *)(iVar8 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (identifier "uVar12") (= "=") (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" (identifier "uVar12") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" (( "(") (binary_expression "uVar12 & 0xff0000" (identifier "uVar12") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" (( "(") (binary_expression "uVar12 & 0xff00" (identifier "uVar12") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar12 << 0x18" (identifier "uVar12") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" (identifier "pppuVar13") (= "=") (cast_expression "(undefined ***)auStack_7c" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_7c"))) (; ";")) (if_statement "if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }" (if "if") (parenthesized_expression "((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0))" (( "(") (binary_expression "(uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)" (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)" (( "(") (comma_expression "pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" (identifier "pppuVar13") (= "=") (cast_expression "(undefined ***)auStack_7c" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_7c"))) (, ",") (binary_expression "param_4[0xd] != 0" (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);\n        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }\n      }" ({ "{") (expression_statement "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);" (assignment_expression "local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f)" (identifier "local_64") (= "=") (cast_expression "(char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f)" (( "(") (binary_expression "CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f" (call_expression "CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc))" (identifier "CONCAT31") (argument_list "(local_64._1_3_,*(byte *)(iVar8 + 0xc))" (( "(") (field_expression "local_64._1_3_" (identifier "local_64") (. ".") (field_identifier "_1_3_")) (, ",") (pointer_expression "*(byte *)(iVar8 + 0xc)" (* "*") (cast_expression "(byte *)(iVar8 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xc)" (( "(") (binary_expression "iVar8 + 0xc" (identifier "iVar8") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (& "&") (number_literal "0xffffff0f")) () ")")))) (; ";")) (if_statement "if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }" (if "if") (parenthesized_expression "(((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12))" (( "(") (binary_expression "((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||\n           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)" (parenthesized_expression "((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf))" (( "(") (binary_expression "(byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)" (cast_expression "(byte)local_64" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_64")) (!= "!=") (parenthesized_expression "(*(byte *)(param_4 + 10) & 0xf)" (( "(") (binary_expression "*(byte *)(param_4 + 10) & 0xf" (pointer_expression "*(byte *)(param_4 + 10)" (* "*") (cast_expression "(byte *)(param_4 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 10)" (( "(") (binary_expression "param_4 + 10" (identifier "param_4") (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "0xf")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)" (( "(") (comma_expression "pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" (identifier "pppuVar13") (= "=") (cast_expression "(undefined ***)auStack_7c" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_7c"))) (, ",") (binary_expression "param_4[0xd] != uVar12" (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]")) (!= "!=") (identifier "uVar12"))) () ")"))) () ")")) (compound_statement "{\n          pcVar7 = (char *)*param_4;\n          local_74 = &local_34;\n          local_70 = &local_44;\n          pppuVar13 = (undefined ***)auStack_7c;\n          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }\n        }" ({ "{") (expression_statement "pcVar7 = (char *)*param_4;" (assignment_expression "pcVar7 = (char *)*param_4" (identifier "pcVar7") (= "=") (cast_expression "(char *)*param_4" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (expression_statement "local_74 = &local_34;" (assignment_expression "local_74 = &local_34" (identifier "local_74") (= "=") (pointer_expression "&local_34" (& "&") (identifier "local_34"))) (; ";")) (expression_statement "local_70 = &local_44;" (assignment_expression "local_70 = &local_44" (identifier "local_70") (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (expression_statement "pppuVar13 = (undefined ***)auStack_7c;" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" (identifier "pppuVar13") (= "=") (cast_expression "(undefined ***)auStack_7c" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_7c"))) (; ";")) (if_statement "if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }" (if "if") (parenthesized_expression "((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z'))" (( "(") (binary_expression "(*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')" (parenthesized_expression "(*pcVar7 == '_')" (( "(") (binary_expression "*pcVar7 == '_'" (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')" (( "(") (comma_expression "pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z'" (assignment_expression "pppuVar13 = (undefined ***)auStack_7c" (identifier "pppuVar13") (= "=") (cast_expression "(undefined ***)auStack_7c" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_7c"))) (, ",") (binary_expression "pcVar7[1] == 'Z'" (subscript_expression "pcVar7[1]" (identifier "pcVar7") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'Z'" (' "'") (character "Z") (' "'")))) () ")"))) () ")")) (compound_statement "{\n            uVar12 = *(uint *)(iVar8 + 4);\n            local_44 = param_9;\n            local_38 = 0;\n            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;\n            local_40 = param_8;\n            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }\n            local_34 = (undefined4 *)param_4[2];\n            local_28 = 0;\n            local_30 = local_6c;\n            local_2c = param_4[0xc];\n            ppuStack_80 = param_3;\n            ppuStack_84 = param_3;\n            local_64 = &local_4c;\n            local_4c = pcVar7;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            local_6c = local_54;\n            local_78 = &local_48;\n            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);\n            local_4c = (char *)*param_4;\n            local_48 = FUN_001646d0(param_3 + 0x47,local_64);\n            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);\n            pppuVar13 = &ppuStack_84;\n          }" ({ "{") (expression_statement "uVar12 = *(uint *)(iVar8 + 4);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 4)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(iVar8 + 4)" (* "*") (cast_expression "(uint *)(iVar8 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 4)" (( "(") (binary_expression "iVar8 + 4" (identifier "iVar8") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_44 = param_9;" (assignment_expression "local_44 = param_9" (identifier "local_44") (= "=") (identifier "param_9")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18;" (assignment_expression "local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18" (identifier "local_3c") (= "=") (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                       uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" (identifier "uVar12") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" (( "(") (binary_expression "uVar12 & 0xff0000" (identifier "uVar12") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" (( "(") (binary_expression "uVar12 & 0xff00" (identifier "uVar12") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar12 << 0x18" (identifier "uVar12") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "local_40 = param_8;" (assignment_expression "local_40 = param_8" (identifier "local_40") (= "=") (identifier "param_8")) (; ";")) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }" (if "if") (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) != 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;\n              ppuStack_80 = (undefined **)pcVar7;\n                    \n              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);\n            }" ({ "{") (labeled_statement "LAB_001661e5:\n              ppuStack_84 = local_5c + -0x32ab8;" (statement_identifier "LAB_001661e5") (: ":") (expression_statement "ppuStack_84 = local_5c + -0x32ab8;" (assignment_expression "ppuStack_84 = local_5c + -0x32ab8" (identifier "ppuStack_84") (= "=") (binary_expression "local_5c + -0x32ab8" (identifier "local_5c") (+ "+") (number_literal "-0x32ab8"))) (; ";"))) (expression_statement "ppuStack_80 = (undefined **)pcVar7;" (assignment_expression "ppuStack_80 = (undefined **)pcVar7" (identifier "ppuStack_80") (= "=") (cast_expression "(undefined **)pcVar7" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "pcVar7"))) (; ";")) (expression_statement "FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);" (call_expression "FUN_0005f0b0((int)local_5c + -0xe1673,0xa1)" (identifier "FUN_0005f0b0") (argument_list "((int)local_5c + -0xe1673,0xa1)" (( "(") (binary_expression "(int)local_5c + -0xe1673" (cast_expression "(int)local_5c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_5c")) (+ "+") (number_literal "-0xe1673")) (, ",") (number_literal "0xa1") () ")"))) (; ";")) (} "}"))) (expression_statement "local_34 = (undefined4 *)param_4[2];" (assignment_expression "local_34 = (undefined4 *)param_4[2]" (identifier "local_34") (= "=") (cast_expression "(undefined4 *)param_4[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = local_6c;" (assignment_expression "local_30 = local_6c" (identifier "local_30") (= "=") (identifier "local_6c")) (; ";")) (expression_statement "local_2c = param_4[0xc];" (assignment_expression "local_2c = param_4[0xc]" (identifier "local_2c") (= "=") (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "ppuStack_80 = param_3;" (assignment_expression "ppuStack_80 = param_3" (identifier "ppuStack_80") (= "=") (identifier "param_3")) (; ";")) (expression_statement "ppuStack_84 = param_3;" (assignment_expression "ppuStack_84 = param_3" (identifier "ppuStack_84") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_64 = &local_4c;" (assignment_expression "local_64 = &local_4c" (identifier "local_64") (= "=") (pointer_expression "&local_4c" (& "&") (identifier "local_4c"))) (; ";")) (expression_statement "local_4c = pcVar7;" (assignment_expression "local_4c = pcVar7" (identifier "local_4c") (= "=") (identifier "pcVar7")) (; ";")) (expression_statement "local_48 = FUN_001646d0(param_3 + 0x47,local_64);" (assignment_expression "local_48 = FUN_001646d0(param_3 + 0x47,local_64)" (identifier "local_48") (= "=") (call_expression "FUN_001646d0(param_3 + 0x47,local_64)" (identifier "FUN_001646d0") (argument_list "(param_3 + 0x47,local_64)" (( "(") (binary_expression "param_3 + 0x47" (identifier "param_3") (+ "+") (number_literal "0x47")) (, ",") (identifier "local_64") () ")")))) (; ";")) (expression_statement "local_6c = local_54;" (assignment_expression "local_6c = local_54" (identifier "local_6c") (= "=") (identifier "local_54")) (; ";")) (expression_statement "local_78 = &local_48;" (assignment_expression "local_78 = &local_48" (identifier "local_78") (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (expression_statement "FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);" (call_expression "FUN_001650c0(local_6c,local_48,local_70,local_78,0,1)" (identifier "FUN_001650c0") (argument_list "(local_6c,local_48,local_70,local_78,0,1)" (( "(") (identifier "local_6c") (, ",") (identifier "local_48") (, ",") (identifier "local_70") (, ",") (identifier "local_78") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "local_4c = (char *)*param_4;" (assignment_expression "local_4c = (char *)*param_4" (identifier "local_4c") (= "=") (cast_expression "(char *)*param_4" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (expression_statement "local_48 = FUN_001646d0(param_3 + 0x47,local_64);" (assignment_expression "local_48 = FUN_001646d0(param_3 + 0x47,local_64)" (identifier "local_48") (= "=") (call_expression "FUN_001646d0(param_3 + 0x47,local_64)" (identifier "FUN_001646d0") (argument_list "(param_3 + 0x47,local_64)" (( "(") (binary_expression "param_3 + 0x47" (identifier "param_3") (+ "+") (number_literal "0x47")) (, ",") (identifier "local_64") () ")")))) (; ";")) (expression_statement "FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);" (call_expression "FUN_001650c0(local_6c,local_48,local_74,local_78,0,1)" (identifier "FUN_001650c0") (argument_list "(local_6c,local_48,local_74,local_78,0,1)" (( "(") (identifier "local_6c") (, ",") (identifier "local_48") (, ",") (identifier "local_74") (, ",") (identifier "local_78") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "pppuVar13 = &ppuStack_84;" (assignment_expression "pppuVar13 = &ppuStack_84" (identifier "pppuVar13") (= "=") (pointer_expression "&ppuStack_84" (& "&") (identifier "ppuStack_84"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}")))) (labeled_statement "LAB_00165ba8:\n  iVar8 = *param_9;" (statement_identifier "LAB_00165ba8") (: ":") (expression_statement "iVar8 = *param_9;" (assignment_expression "iVar8 = *param_9" (identifier "iVar8") (= "=") (pointer_expression "*param_9" (* "*") (identifier "param_9"))) (; ";"))) (expression_statement "*(int **)((int)pppuVar13 + -0x10) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0x10) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0x10)" (* "*") (cast_expression "(int **)((int)pppuVar13 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x10)" (( "(") (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_9")) (; ";")) (expression_statement "pcVar3 = *(code **)(iVar8 + 0x14);" (assignment_expression "pcVar3 = *(code **)(iVar8 + 0x14)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(iVar8 + 0x14)" (* "*") (cast_expression "(code **)(iVar8 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x14)" (( "(") (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x165bb1")) (; ";")) (expression_statement "iVar8 = (*pcVar3)();" (assignment_expression "iVar8 = (*pcVar3)()" (identifier "iVar8") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar8 == 0) {\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar6 = *(byte *)(*param_5 + 0xc);\n  }" ({ "{") (expression_statement "bVar6 = *(byte *)(*param_5 + 0xc);" (assignment_expression "bVar6 = *(byte *)(*param_5 + 0xc)" (identifier "bVar6") (= "=") (pointer_expression "*(byte *)(*param_5 + 0xc)" (* "*") (cast_expression "(byte *)(*param_5 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_5 + 0xc)" (( "(") (binary_expression "*param_5 + 0xc" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    bVar6 = *(byte *)(param_4 + 10);\n  }" (else "else") (compound_statement "{\n    bVar6 = *(byte *)(param_4 + 10);\n  }" ({ "{") (expression_statement "bVar6 = *(byte *)(param_4 + 10);" (assignment_expression "bVar6 = *(byte *)(param_4 + 10)" (identifier "bVar6") (= "=") (pointer_expression "*(byte *)(param_4 + 10)" (* "*") (cast_expression "(byte *)(param_4 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 10)" (( "(") (binary_expression "param_4 + 10" (identifier "param_4") (+ "+") (number_literal "10")) () ")"))))) (; ";")) (} "}")))) (expression_statement "local_64 = (char **)(local_58 & 0xff);" (assignment_expression "local_64 = (char **)(local_58 & 0xff)" (identifier "local_64") (= "=") (cast_expression "(char **)(local_58 & 0xff)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_58 & 0xff)" (( "(") (binary_expression "local_58 & 0xff" (identifier "local_58") (& "&") (number_literal "0xff")) () ")")))) (; ";")) (expression_statement "*(char ***)((int)pppuVar13 + -0x10) = local_64;" (assignment_expression "*(char ***)((int)pppuVar13 + -0x10) = local_64" (pointer_expression "*(char ***)((int)pppuVar13 + -0x10)" (* "*") (cast_expression "(char ***)((int)pppuVar13 + -0x10)" (( "(") (type_descriptor "char ***" (primitive_type "char") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x10)" (( "(") (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x14)" (( "(") (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x165be9")) (; ";")) (expression_statement "uVar9 = FUN_001630f0();" (assignment_expression "uVar9 = FUN_001630f0()" (identifier "uVar9") (= "=") (call_expression "FUN_001630f0()" (identifier "FUN_001630f0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_58 = param_4[0xd];" (assignment_expression "local_58 = param_4[0xd]" (identifier "local_58") (= "=") (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "*(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;" (assignment_expression "*(uint *)((int)pppuVar13 + -4) = local_68 & 0xff" (pointer_expression "*(uint *)((int)pppuVar13 + -4)" (* "*") (cast_expression "(uint *)((int)pppuVar13 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -4)" (( "(") (binary_expression "(int)pppuVar13 + -4" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "local_68 & 0xff" (identifier "local_68") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "*(undefined4 ***)((int)pppuVar13 + -8) = local_74;" (assignment_expression "*(undefined4 ***)((int)pppuVar13 + -8) = local_74" (pointer_expression "*(undefined4 ***)((int)pppuVar13 + -8)" (* "*") (cast_expression "(undefined4 ***)((int)pppuVar13 + -8)" (( "(") (type_descriptor "undefined4 ***" (type_identifier "undefined4") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppuVar13 + -8)" (( "(") (binary_expression "(int)pppuVar13 + -8" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "local_74")) (; ";")) (expression_statement "*(int ***)((int)pppuVar13 + -0xc) = local_70;" (assignment_expression "*(int ***)((int)pppuVar13 + -0xc) = local_70" (pointer_expression "*(int ***)((int)pppuVar13 + -0xc)" (* "*") (cast_expression "(int ***)((int)pppuVar13 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppuVar13 + -0xc)" (( "(") (binary_expression "(int)pppuVar13 + -0xc" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_70")) (; ";")) (expression_statement "*(int **)((int)pppuVar13 + -0x10) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0x10) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0x10)" (* "*") (cast_expression "(int **)((int)pppuVar13 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x10)" (( "(") (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_9")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x14)" (( "(") (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;" (assignment_expression "*(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf" (pointer_expression "*(uint *)((int)pppuVar13 + -0x18)" (* "*") (cast_expression "(uint *)((int)pppuVar13 + -0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x18)" (( "(") (binary_expression "(int)pppuVar13 + -0x18" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (binary_expression "bVar6 & 0xf" (identifier "bVar6") (& "&") (number_literal "0xf"))) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x1c)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x1c)" (( "(") (binary_expression "(int)pppuVar13 + -0x1c" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined4 **)((int)pppuVar13 + -0x20) = param_4;" (assignment_expression "*(undefined4 **)((int)pppuVar13 + -0x20) = param_4" (pointer_expression "*(undefined4 **)((int)pppuVar13 + -0x20)" (* "*") (cast_expression "(undefined4 **)((int)pppuVar13 + -0x20)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x20)" (( "(") (binary_expression "(int)pppuVar13 + -0x20" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x24)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x24)" (( "(") (binary_expression "(int)pppuVar13 + -0x24" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x165c08")) (; ";")) (expression_statement "cVar5 = FUN_00163520();" (assignment_expression "cVar5 = FUN_00163520()" (identifier "cVar5") (= "=") (call_expression "FUN_00163520()" (identifier "FUN_00163520") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar5 == '\0') {\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar8 = *param_5;\n    if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }\n    bVar6 = *(byte *)(iVar8 + 0xd) & 3;\n    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }\n  }" ({ "{") (expression_statement "iVar8 = *param_5;" (assignment_expression "iVar8 = *param_5" (identifier "iVar8") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (if_statement "if ((char)local_44 != '\0') {\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" (if "if") (parenthesized_expression "((char)local_44 != '\0')" (( "(") (binary_expression "(char)local_44 != '\0'" (cast_expression "(char)local_44" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_44")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar12 = *(uint *)(iVar8 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }\n      uVar12 = *(uint *)(iVar8 + 4);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" ({ "{") (expression_statement "uVar12 = *(uint *)(iVar8 + 8);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 8)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(iVar8 + 8)" (* "*") (cast_expression "(uint *)(iVar8 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (identifier "uVar12") (= "=") (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" (identifier "uVar12") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" (( "(") (binary_expression "uVar12 & 0xff0000" (identifier "uVar12") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" (( "(") (binary_expression "uVar12 & 0xff00" (identifier "uVar12") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar12 << 0x18" (identifier "uVar12") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (local_58 < uVar12) {\n        param_4[0xd] = uVar12;\n      }" (if "if") (parenthesized_expression "(local_58 < uVar12)" (( "(") (binary_expression "local_58 < uVar12" (identifier "local_58") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n        param_4[0xd] = uVar12;\n      }" ({ "{") (expression_statement "param_4[0xd] = uVar12;" (assignment_expression "param_4[0xd] = uVar12" (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (expression_statement "uVar12 = *(uint *)(iVar8 + 4);" (assignment_expression "uVar12 = *(uint *)(iVar8 + 4)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(iVar8 + 4)" (* "*") (cast_expression "(uint *)(iVar8 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 4)" (( "(") (binary_expression "iVar8 + 4" (identifier "iVar8") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (identifier "uVar12") (= "=") (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" (identifier "uVar12") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" (( "(") (binary_expression "uVar12 & 0xff0000" (identifier "uVar12") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" (( "(") (binary_expression "uVar12 & 0xff00" (identifier "uVar12") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar12 << 0x18" (identifier "uVar12") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }" (if "if") (parenthesized_expression "((uint)param_4[0xc] < uVar12)" (( "(") (binary_expression "(uint)param_4[0xc] < uVar12" (cast_expression "(uint)param_4[0xc]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]"))) (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n        param_4[0xc] = uVar12;\n      }" ({ "{") (expression_statement "param_4[0xc] = uVar12;" (assignment_expression "param_4[0xc] = uVar12" (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (} "}"))) (if_statement "if ((char)local_34 != '\0') {\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }" (if "if") (parenthesized_expression "((char)local_34 != '\0')" (( "(") (binary_expression "(char)local_34 != '\0'" (cast_expression "(char)local_34" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_34")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }\n    }" ({ "{") (if_statement "if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }" (if "if") (parenthesized_expression "(((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0))" (( "(") (binary_expression "((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)" (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_4 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 1)" (( "(") (binary_expression "*(byte *)(param_4 + 0xb) & 1" (pointer_expression "*(byte *)(param_4 + 0xb)" (* "*") (cast_expression "(byte *)(param_4 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xb)" (( "(") (binary_expression "param_4 + 0xb" (identifier "param_4") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_4 + 0xb) & 2) != 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 2)" (( "(") (binary_expression "*(byte *)(param_4 + 0xb) & 2" (pointer_expression "*(byte *)(param_4 + 0xb)" (* "*") (cast_expression "(byte *)(param_4 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xb)" (( "(") (binary_expression "param_4 + 0xb" (identifier "param_4") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        *(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;\n      }" ({ "{") (expression_statement "*(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;" (assignment_expression "*(byte *)(param_4 + 0xb) =\n             *(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1" (pointer_expression "*(byte *)(param_4 + 0xb)" (* "*") (cast_expression "(byte *)(param_4 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xb)" (( "(") (binary_expression "param_4 + 0xb" (identifier "param_4") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd |\n             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02'" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd" (pointer_expression "*(byte *)(param_4 + 0xb)" (* "*") (cast_expression "(byte *)(param_4 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xb)" (( "(") (binary_expression "param_4 + 0xb" (identifier "param_4") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0xfd")) (| "|") (binary_expression "((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02'" (parenthesized_expression "((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2)" (( "(") (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc) >> 4" (binary_expression "(int)(uint)*(byte *)(iVar8 + 0xc)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(iVar8 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xc)" (( "(") (binary_expression "iVar8 + 0xc" (identifier "iVar8") (+ "+") (number_literal "0xc")) () ")")))) (>> ">>") (number_literal "4")) (== "==") (number_literal "2")) () ")")) (* "*") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'")))) (| "|") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar6 = *(byte *)(iVar8 + 0xd) & 3;" (assignment_expression "bVar6 = *(byte *)(iVar8 + 0xd) & 3" (identifier "bVar6") (= "=") (binary_expression "*(byte *)(iVar8 + 0xd) & 3" (pointer_expression "*(byte *)(iVar8 + 0xd)" (* "*") (cast_expression "(byte *)(iVar8 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xd)" (( "(") (binary_expression "iVar8 + 0xd" (identifier "iVar8") (+ "+") (number_literal "0xd")) () ")")))) (& "&") (number_literal "3"))) (; ";")) (if_statement "if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar8 + 0xd) & 3) != 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0xd) & 3) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0xd) & 3)" (( "(") (binary_expression "*(byte *)(iVar8 + 0xd) & 3" (pointer_expression "*(byte *)(iVar8 + 0xd)" (* "*") (cast_expression "(byte *)(iVar8 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xd)" (( "(") (binary_expression "iVar8 + 0xd" (identifier "iVar8") (+ "+") (number_literal "0xd")) () ")")))) (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      bVar1 = *(byte *)((int)param_4 + 0x29);\n      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }\n    }" ({ "{") (expression_statement "bVar1 = *(byte *)((int)param_4 + 0x29);" (assignment_expression "bVar1 = *(byte *)((int)param_4 + 0x29)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((int)param_4 + 0x29)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x29)" (( "(") (binary_expression "(int)param_4 + 0x29" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x29")) () ")"))))) (; ";")) (if_statement "if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }" (if "if") (parenthesized_expression "(((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3)))" (( "(") (binary_expression "((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))" (parenthesized_expression "((bVar1 & 3) == 0)" (( "(") (binary_expression "(bVar1 & 3) == 0" (parenthesized_expression "(bVar1 & 3)" (( "(") (binary_expression "bVar1 & 3" (identifier "bVar1") (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar6 < (bVar1 & 3))" (( "(") (binary_expression "bVar6 < (bVar1 & 3)" (identifier "bVar6") (< "<") (parenthesized_expression "(bVar1 & 3)" (( "(") (binary_expression "bVar1 & 3" (identifier "bVar1") (& "&") (number_literal "3")) () ")"))) () ")"))) () ")")) (compound_statement "{\n        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;\n      }" ({ "{") (expression_statement "*(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;" (assignment_expression "*(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc" (pointer_expression "*(byte *)((int)param_4 + 0x29)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x29)" (( "(") (binary_expression "(int)param_4 + 0x29" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x29")) () ")")))) (= "=") (binary_expression "bVar6 | bVar1 & 0xfc" (identifier "bVar6") (| "|") (binary_expression "bVar1 & 0xfc" (identifier "bVar1") (& "&") (number_literal "0xfc")))) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }" (else "else") (compound_statement "{\n    bVar6 = *(byte *)(param_4 + 10);\n    uVar12 = param_4[0xc];\n    *(undefined ***)((int)pppuVar13 + -8) = param_10;\n    *(int **)((int)pppuVar13 + -0xc) = param_9;\n    *(char ***)((int)pppuVar13 + -0x10) = local_64;\n    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;\n    *(int **)((int)pppuVar13 + -0x18) = param_5;\n    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;\n    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;\n    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);\n    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;\n    FUN_001648f0();\n    if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }\n    if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }\n  }" ({ "{") (expression_statement "bVar6 = *(byte *)(param_4 + 10);" (assignment_expression "bVar6 = *(byte *)(param_4 + 10)" (identifier "bVar6") (= "=") (pointer_expression "*(byte *)(param_4 + 10)" (* "*") (cast_expression "(byte *)(param_4 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 10)" (( "(") (binary_expression "param_4 + 10" (identifier "param_4") (+ "+") (number_literal "10")) () ")"))))) (; ";")) (expression_statement "uVar12 = param_4[0xc];" (assignment_expression "uVar12 = param_4[0xc]" (identifier "uVar12") (= "=") (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "*(undefined ***)((int)pppuVar13 + -8) = param_10;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -8) = param_10" (pointer_expression "*(undefined ***)((int)pppuVar13 + -8)" (* "*") (cast_expression "(undefined ***)((int)pppuVar13 + -8)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppuVar13 + -8)" (( "(") (binary_expression "(int)pppuVar13 + -8" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "param_10")) (; ";")) (expression_statement "*(int **)((int)pppuVar13 + -0xc) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0xc) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0xc)" (* "*") (cast_expression "(int **)((int)pppuVar13 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar13 + -0xc)" (( "(") (binary_expression "(int)pppuVar13 + -0xc" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_9")) (; ";")) (expression_statement "*(char ***)((int)pppuVar13 + -0x10) = local_64;" (assignment_expression "*(char ***)((int)pppuVar13 + -0x10) = local_64" (pointer_expression "*(char ***)((int)pppuVar13 + -0x10)" (* "*") (cast_expression "(char ***)((int)pppuVar13 + -0x10)" (( "(") (type_descriptor "char ***" (primitive_type "char") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x10)" (( "(") (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (expression_statement "*(undefined1 **)((int)pppuVar13 + -0x14) = param_6;" (assignment_expression "*(undefined1 **)((int)pppuVar13 + -0x14) = param_6" (pointer_expression "*(undefined1 **)((int)pppuVar13 + -0x14)" (* "*") (cast_expression "(undefined1 **)((int)pppuVar13 + -0x14)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x14)" (( "(") (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "param_6")) (; ";")) (expression_statement "*(int **)((int)pppuVar13 + -0x18) = param_5;" (assignment_expression "*(int **)((int)pppuVar13 + -0x18) = param_5" (pointer_expression "*(int **)((int)pppuVar13 + -0x18)" (* "*") (cast_expression "(int **)((int)pppuVar13 + -0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x18)" (( "(") (binary_expression "(int)pppuVar13 + -0x18" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;" (assignment_expression "*(undefined4 **)((int)pppuVar13 + -0x1c) = param_4" (pointer_expression "*(undefined4 **)((int)pppuVar13 + -0x1c)" (* "*") (cast_expression "(undefined4 **)((int)pppuVar13 + -0x1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x1c)" (( "(") (binary_expression "(int)pppuVar13 + -0x1c" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined ***)((int)pppuVar13 + -0x20) = param_3;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -0x20) = param_3" (pointer_expression "*(undefined ***)((int)pppuVar13 + -0x20)" (* "*") (cast_expression "(undefined ***)((int)pppuVar13 + -0x20)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x20)" (( "(") (binary_expression "(int)pppuVar13 + -0x20" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);" (assignment_expression "local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4)" (identifier "local_68") (= "=") (call_expression "CONCAT31(local_68._1_3_,bVar6 >> 4)" (identifier "CONCAT31") (argument_list "(local_68._1_3_,bVar6 >> 4)" (( "(") (field_expression "local_68._1_3_" (identifier "local_68") (. ".") (field_identifier "_1_3_")) (, ",") (binary_expression "bVar6 >> 4" (identifier "bVar6") (>> ">>") (number_literal "4")) () ")")))) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x24)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x24)" (( "(") (binary_expression "(int)pppuVar13 + -0x24" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x16600e")) (; ";")) (expression_statement "FUN_001648f0();" (call_expression "FUN_001648f0()" (identifier "FUN_001648f0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((char)local_44 != '\0') {\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" (if "if") (parenthesized_expression "((char)local_44 != '\0')" (( "(") (binary_expression "(char)local_44 != '\0'" (cast_expression "(char)local_44" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_44")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }\n      if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }\n    }" ({ "{") (if_statement "if ((uint)param_4[0xd] < local_58) {\n        param_4[0xd] = local_58;\n      }" (if "if") (parenthesized_expression "((uint)param_4[0xd] < local_58)" (( "(") (binary_expression "(uint)param_4[0xd] < local_58" (cast_expression "(uint)param_4[0xd]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]"))) (< "<") (identifier "local_58")) () ")")) (compound_statement "{\n        param_4[0xd] = local_58;\n      }" ({ "{") (expression_statement "param_4[0xd] = local_58;" (assignment_expression "param_4[0xd] = local_58" (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "local_58")) (; ";")) (} "}"))) (if_statement "if ((uint)param_4[0xc] < uVar12) {\n        param_4[0xc] = uVar12;\n      }" (if "if") (parenthesized_expression "((uint)param_4[0xc] < uVar12)" (( "(") (binary_expression "(uint)param_4[0xc] < uVar12" (cast_expression "(uint)param_4[0xc]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]"))) (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n        param_4[0xc] = uVar12;\n      }" ({ "{") (expression_statement "param_4[0xc] = uVar12;" (assignment_expression "param_4[0xc] = uVar12" (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }" (if "if") (parenthesized_expression "(((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0))))" (( "(") (binary_expression "((char)local_34 != '\0') &&\n       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))" (parenthesized_expression "((char)local_34 != '\0')" (( "(") (binary_expression "(char)local_34 != '\0'" (cast_expression "(char)local_34" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_34")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))" (( "(") (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0))" (( "(") (binary_expression "(*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)" (binary_expression "(*(byte *)(param_4 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 1)" (( "(") (binary_expression "*(byte *)(param_4 + 0xb) & 1" (pointer_expression "*(byte *)(param_4 + 0xb)" (* "*") (cast_expression "(byte *)(param_4 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xb)" (( "(") (binary_expression "param_4 + 0xb" (identifier "param_4") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_4 + 0xb) & 2) != 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 2)" (( "(") (binary_expression "*(byte *)(param_4 + 0xb) & 2" (pointer_expression "*(byte *)(param_4 + 0xb)" (* "*") (cast_expression "(byte *)(param_4 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xb)" (( "(") (binary_expression "param_4 + 0xb" (identifier "param_4") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      *(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;\n    }" ({ "{") (expression_statement "*(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;" (assignment_expression "*(byte *)(param_4 + 0xb) =\n           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1" (pointer_expression "*(byte *)(param_4 + 0xb)" (* "*") (cast_expression "(byte *)(param_4 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xb)" (( "(") (binary_expression "param_4 + 0xb" (identifier "param_4") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02'" (binary_expression "*(byte *)(param_4 + 0xb) & 0xfd" (pointer_expression "*(byte *)(param_4 + 0xb)" (* "*") (cast_expression "(byte *)(param_4 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xb)" (( "(") (binary_expression "param_4 + 0xb" (identifier "param_4") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0xfd")) (| "|") (binary_expression "((char)local_68 == '\x02') * '\x02'" (parenthesized_expression "((char)local_68 == '\x02')" (( "(") (binary_expression "(char)local_68 == '\x02'" (cast_expression "(char)local_68" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_68")) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (* "*") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'")))) (| "|") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }" (if "if") (parenthesized_expression "((*(byte *)((int)param_4 + 0x2a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)((int)param_4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)((int)param_4 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)((int)param_4 + 0x2a) & 7" (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar6 = *(byte *)(param_4[2] + 0x2c);\n    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }\n  }" ({ "{") (expression_statement "bVar6 = *(byte *)(param_4[2] + 0x2c);" (assignment_expression "bVar6 = *(byte *)(param_4[2] + 0x2c)" (identifier "bVar6") (= "=") (pointer_expression "*(byte *)(param_4[2] + 0x2c)" (* "*") (cast_expression "(byte *)(param_4[2] + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4[2] + 0x2c)" (( "(") (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (if_statement "if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }" (if "if") (parenthesized_expression "((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0))" (( "(") (binary_expression "(((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&\n       ((*(byte *)(param_4 + 0xb) & 2) == 0)" (parenthesized_expression "(((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0'))" (( "(") (binary_expression "((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')" (parenthesized_expression "((bVar6 & 1) != 0)" (( "(") (binary_expression "(bVar6 & 1) != 0" (parenthesized_expression "(bVar6 & 1)" (( "(") (binary_expression "bVar6 & 1" (identifier "bVar6") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((char)*(byte *)((int)param_4 + 0x2a) < '\0')" (( "(") (binary_expression "(char)*(byte *)((int)param_4 + 0x2a) < '\0'" (cast_expression "(char)*(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*(byte *)((int)param_4 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 0x2a)" (( "(") (binary_expression "(int)param_4 + 0x2a" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "0x2a")) () ")"))))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_4 + 0xb) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(param_4 + 0xb) & 2) == 0" (parenthesized_expression "(*(byte *)(param_4 + 0xb) & 2)" (( "(") (binary_expression "*(byte *)(param_4 + 0xb) & 2" (pointer_expression "*(byte *)(param_4 + 0xb)" (* "*") (cast_expression "(byte *)(param_4 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xb)" (( "(") (binary_expression "param_4 + 0xb" (identifier "param_4") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;\n    }" ({ "{") (expression_statement "*(byte *)(param_4[2] + 0x2c) = bVar6 | 2;" (assignment_expression "*(byte *)(param_4[2] + 0x2c) = bVar6 | 2" (pointer_expression "*(byte *)(param_4[2] + 0x2c)" (* "*") (cast_expression "(byte *)(param_4[2] + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4[2] + 0x2c)" (( "(") (binary_expression "param_4[2] + 0x2c" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (binary_expression "bVar6 | 2" (identifier "bVar6") (| "|") (number_literal "2"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if ((char)local_44 != '\0') {\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }" (if "if") (parenthesized_expression "((char)local_44 != '\0')" (( "(") (binary_expression "(char)local_44 != '\0'" (cast_expression "(char)local_44" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_44")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar8 = *(int *)(*local_60 + 8);\n    if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }\n    if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }\n  }" ({ "{") (expression_statement "iVar8 = *(int *)(*local_60 + 8);" (assignment_expression "iVar8 = *(int *)(*local_60 + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(*local_60 + 8)" (* "*") (cast_expression "(int *)(*local_60 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_60 + 8)" (( "(") (binary_expression "*local_60 + 8" (pointer_expression "*local_60" (* "*") (identifier "local_60")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar8 == 0) {\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;\n      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;\n      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;\n      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;\n                    \n      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;\n      FUN_0005f0b0();\n    }" ({ "{") (labeled_statement "LAB_00165d90:\n      *(int *)((int)pppuVar13 + -4) = iVar8;" (statement_identifier "LAB_00165d90") (: ":") (expression_statement "*(int *)((int)pppuVar13 + -4) = iVar8;" (assignment_expression "*(int *)((int)pppuVar13 + -4) = iVar8" (pointer_expression "*(int *)((int)pppuVar13 + -4)" (* "*") (cast_expression "(int *)((int)pppuVar13 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -4)" (( "(") (binary_expression "(int)pppuVar13 + -4" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "iVar8")) (; ";"))) (expression_statement "*(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba" (pointer_expression "*(undefined ***)((int)pppuVar13 + -8)" (* "*") (cast_expression "(undefined ***)((int)pppuVar13 + -8)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppuVar13 + -8)" (( "(") (binary_expression "(int)pppuVar13 + -8" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "local_5c + -0x32aba" (identifier "local_5c") (+ "+") (number_literal "-0x32aba"))) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0xc)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0xc)" (( "(") (binary_expression "(int)pppuVar13 + -0xc" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0x5c")) (; ";")) (expression_statement "*(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4" (pointer_expression "*(undefined ***)((int)pppuVar13 + -0x10)" (* "*") (cast_expression "(undefined ***)((int)pppuVar13 + -0x10)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x10)" (( "(") (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "local_5c + -0x385a4" (identifier "local_5c") (+ "+") (number_literal "-0x385a4"))) (; ";")) (expression_statement "*(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;" (assignment_expression "*(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9" (pointer_expression "*(undefined **)((int)pppuVar13 + -0x14)" (* "*") (cast_expression "(undefined **)((int)pppuVar13 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x14)" (( "(") (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00165da9" (& "&") (identifier "UNK_00165da9"))) (; ";")) (expression_statement "FUN_0005f0b0();" (call_expression "FUN_0005f0b0()" (identifier "FUN_0005f0b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar8 + 0x43e5) != '\0') {\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0x43e5) != '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0x43e5) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x43e5)" (* "*") (cast_expression "(char *)(iVar8 + 0x43e5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x43e5)" (( "(") (binary_expression "iVar8 + 0x43e5" (identifier "iVar8") (+ "+") (number_literal "0x43e5")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar12 = *(uint *)(*param_5 + 8);\n      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n      if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }\n      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;\n      uVar9 = gettext();\n      *(int **)((int)pppuVar13 + -0x10) = param_9;\n      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;\n      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;\n      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;\n      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;\n      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;\n      FUN_00163350();\n    }" ({ "{") (expression_statement "uVar12 = *(uint *)(*param_5 + 8);" (assignment_expression "uVar12 = *(uint *)(*param_5 + 8)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(*param_5 + 8)" (* "*") (cast_expression "(uint *)(*param_5 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_5 + 8)" (( "(") (binary_expression "*param_5 + 8" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (identifier "uVar12") (= "=") (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" (identifier "uVar12") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" (( "(") (binary_expression "uVar12 & 0xff0000" (identifier "uVar12") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" (( "(") (binary_expression "uVar12 & 0xff00" (identifier "uVar12") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar12 << 0x18" (identifier "uVar12") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (uVar12 < local_58) {\n        ppuVar10 = local_5c + -0x32a9f;\n      }\n      else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" (if "if") (parenthesized_expression "(uVar12 < local_58)" (( "(") (binary_expression "uVar12 < local_58" (identifier "uVar12") (< "<") (identifier "local_58")) () ")")) (compound_statement "{\n        ppuVar10 = local_5c + -0x32a9f;\n      }" ({ "{") (expression_statement "ppuVar10 = local_5c + -0x32a9f;" (assignment_expression "ppuVar10 = local_5c + -0x32a9f" (identifier "ppuVar10") (= "=") (binary_expression "local_5c + -0x32a9f" (identifier "local_5c") (+ "+") (number_literal "-0x32a9f"))) (; ";")) (} "}")) (else_clause "else if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" (else "else") (if_statement "if (local_58 < uVar12) {\n        ppuVar10 = local_5c + -0x32a94;\n      }\n      else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" (if "if") (parenthesized_expression "(local_58 < uVar12)" (( "(") (binary_expression "local_58 < uVar12" (identifier "local_58") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n        ppuVar10 = local_5c + -0x32a94;\n      }" ({ "{") (expression_statement "ppuVar10 = local_5c + -0x32a94;" (assignment_expression "ppuVar10 = local_5c + -0x32a94" (identifier "ppuVar10") (= "=") (binary_expression "local_5c + -0x32a94" (identifier "local_5c") (+ "+") (number_literal "-0x32a94"))) (; ";")) (} "}")) (else_clause "else {\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" (else "else") (compound_statement "{\n        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);\n      }" ({ "{") (expression_statement "ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);" (assignment_expression "ppuVar10 = (undefined **)((int)local_5c + -0xcaa26)" (identifier "ppuVar10") (= "=") (cast_expression "(undefined **)((int)local_5c + -0xcaa26)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_5c + -0xcaa26)" (( "(") (binary_expression "(int)local_5c + -0xcaa26" (cast_expression "(int)local_5c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_5c")) (+ "+") (number_literal "-0xcaa26")) () ")")))) (; ";")) (} "}")))))) (expression_statement "*(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;" (assignment_expression "*(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10" (pointer_expression "*(undefined ***)((int)pppuVar13 + -0x10)" (* "*") (cast_expression "(undefined ***)((int)pppuVar13 + -0x10)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x10)" (( "(") (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "ppuVar10")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x14)" (( "(") (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x165cf0")) (; ";")) (expression_statement "uVar9 = gettext();" (assignment_expression "uVar9 = gettext()" (identifier "uVar9") (= "=") (call_expression "gettext()" (identifier "gettext") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int **)((int)pppuVar13 + -0x10) = param_9;" (assignment_expression "*(int **)((int)pppuVar13 + -0x10) = param_9" (pointer_expression "*(int **)((int)pppuVar13 + -0x10)" (* "*") (cast_expression "(int **)((int)pppuVar13 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x10)" (( "(") (binary_expression "(int)pppuVar13 + -0x10" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_9")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x14) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x14) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x14)" (( "(") (binary_expression "(int)pppuVar13 + -0x14" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 **)((int)pppuVar13 + -0x18) = param_4;" (assignment_expression "*(undefined4 **)((int)pppuVar13 + -0x18) = param_4" (pointer_expression "*(undefined4 **)((int)pppuVar13 + -0x18)" (* "*") (cast_expression "(undefined4 **)((int)pppuVar13 + -0x18)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x18)" (( "(") (binary_expression "(int)pppuVar13 + -0x18" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x1c)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x1c)" (( "(") (binary_expression "(int)pppuVar13 + -0x1c" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x20) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x20) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x20)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x20)" (( "(") (binary_expression "(int)pppuVar13 + -0x20" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;" (assignment_expression "*(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe" (pointer_expression "*(undefined4 *)((int)pppuVar13 + -0x24)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar13 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar13 + -0x24)" (( "(") (binary_expression "(int)pppuVar13 + -0x24" (cast_expression "(int)pppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar13")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x165cfe")) (; ";")) (expression_statement "FUN_00163350();" (call_expression "FUN_00163350()" (identifier "FUN_00163350") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "STB": Some values do not have unique names */
/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: resolve<32, true>
   DWARF original prototype: void resolve<32,_true>(Symbol_table * this, Sized_symbol<32> * to,
   Sym<32,_true> * sym, uint st_shndx, bool is_ordinary, uint orig_st_shndx, Object * object, char *
   version, bool is_default_version) */

void __thiscall
var_12::type_11::resolve<32,var_23>
          (type_11 *this,Sized_symbol<32> *to,Sym<32,var_23> *sym,type_2 var_8,bool var_7
          ,type_2 var_24,type_4 *var_3,char *version,bool is_default_version)

{
  type_12 *puVar1;
  type_1 var_33;
  type_2 var_6;
  type_3 *var_10;
  type_4 *pOVar5;
  var_1<32> *pSVar6;
  type_5 *pOVar7;
  type_6 *p_Var8;
  type_7 ppOVar9;
  type_8 aVar10;
  char var_11;
  bool bVar12;
  type_1 var_34;
  int var_20;
  type_9 *var_21;
  type_10 SVar16;
  type_2 var_9;
  char *pcVar18;
  type_10 var_29;
  type_11 *pSVar20;
  type_11 *pSVar21;
  bool *local_74;
  bool *local_70;
  type_1 var_4;
  type_12 var_26 [12];
  type_13 __node_gen;
  bool var_31;
  type_2 local_40;
  type_14 local_3c;
  type_15 local_38;
  bool var_32;
  type_2 local_30;
  type_16 **local_2c;
  type_17 local_28;
  
  if (((to->super_Symbol).field_0x2a & 7) != 0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/symtab.h",0xaa,"shndx");
  }
  var_4 = (type_1)(to->super_Symbol).field_0x2b >> 5 & 1;
  var_6 = (to->super_Symbol).u2_.shndx;
  if (var_3 == (to->super_Symbol).u1_.var_3) {
    if (var_4 == 0) {
      bVar12 = Symbol::var_5(var_6);
      if ((bVar12) || (!var_7)) goto LAB_00165abe;
    }
    else if ((var_6 != 0) && ((var_7 && (var_8 == var_6)))) goto LAB_00165d65;
  }
  else {
LAB_00165abe:
    if ((var_8 == 0xfff1 && !var_7) && ((var_4 == 0 && (var_6 == 0xfff1)))) {
LAB_00165d65:
      var_9 = sym->p_->st_value;
      if ((var_9 >> 0x18 | (var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 | var_9 << 0x18) ==
          to->value_) {
        return;
      }
    }
  }
  var_10 = parameters->target_;
  if (var_10 == (type_3 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/parameters.h",0x69,"target");
  }
  if ((*(char *)(*(int *)(var_10 + 4) + 0xd) == '\0') ||
     (var_11 = (**(type_18 **)(*(int *)var_10 + 0xa4))(var_10,to,sym,var_3,version), var_11 == '\0'))
  {
    if ((var_3->field_0x2c & 1) == 0) {
      if (((sym->p_->st_info & 0xf) == 5) &&
         ((var_7 || (bVar12 = Symbol::var_5(var_8), !bVar12)))) {
        if (((to->super_Symbol).field_0x2a & 7) == 0) {
          ppOVar9 = ((to->super_Symbol).u1_.output_segment)->output_lists_[0].
                    super__Vector_base<var_12::Output_data*,var_13::allocator<var_12::Output_data*>var_14>.
                    _M_impl._M_finish;
          Symbol::var_15(&to->super_Symbol);
          aVar10 = var_18;
          pcVar18 = (char *)var_16("STT_COMMON symbol \'%s\' in %s is not in a common section");
                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */
          var_17(pcVar18,aVar10.var_3,ppOVar9);
          if (var_18 == (type_4 *)&local_2c) {
            return;
          }
          var_19(var_18);
          return;
        }
        goto LAB_001661e5;
      }
      puVar1 = &(to->super_Symbol).field_0x2a;
      *puVar1 = *puVar1 | 0x80;
      var_20 = (*var_3->_vptr_Object[5])(var_3);
    }
    else {
      if ((var_8 == 0) && (((type_1)(to->super_Symbol).field_0x29 & 3) - 1 < 2)) {
        return;
      }
      puVar1 = &(to->super_Symbol).field_0x2b;
      *puVar1 = *puVar1 | 1;
      var_20 = (*var_3->_vptr_Object[5])(var_3);
    }
    if ((var_20 == 0) && ((var_3->field_0x2c & 1) == 0)) {
      puVar1 = &(to->super_Symbol).field_0x2b;
      *puVar1 = *puVar1 | 0x40;
    }
    if ((((to->super_Symbol).field_0x2a & 7) == 0) &&
       (pOVar5 = (to->super_Symbol).u1_.var_3, var_20 = (*pOVar5->_vptr_Object[5])(pOVar5),
       var_20 != 0)) {
      var_21 = parameters->options_;
      if (var_21 == (type_9 *)0x0) goto LAB_00165d90;
      if (var_21->plugins_->in_replacement_phase_ != false) {
        if ((((((to->super_Symbol).field_0x2a & 7) != 0) ||
             (((to->super_Symbol).field_0x2b & 0x20) != 0)) ||
            (bVar12 = Symbol::var_5((to->super_Symbol).u2_.shndx), !bVar12)) ||
           ((var_7 || (bVar12 = Symbol::var_5(var_8), !bVar12)))) {
          var_22<32,var_23>(this,to,sym,var_8,var_7,var_3,version);
          return;
        }
        var_6 = to->symsize_;
        var_9 = to->value_;
        var_22<32,var_23>(this,to,sym,var_8,false,var_3,version);
        if (to->symsize_ < var_6) {
          to->symsize_ = var_6;
        }
        if (var_9 <= to->value_) {
          return;
        }
        to->value_ = var_9;
        return;
      }
    }
    else {
      var_21 = parameters->options_;
      if (var_21 == (type_9 *)0x0) goto LAB_00165d90;
    }
    if ((var_21->detect_odr_violations_).value != false) {
      pSVar6 = sym->p_;
      if ((((int)(type_2)pSVar6->st_info >> 4 == 2) || ((type_1)(to->super_Symbol).field_0x28 >> 4 == 2)
          ) && (((var_4 & var_24 != 0) != 0 && (var_6 != 0)))) {
        var_9 = pSVar6->st_size;
        var_9 = var_9 >> 0x18 | (var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 | var_9 << 0x18
        ;
        if (((var_9 != 0) && (to->symsize_ != 0)) &&
           ((var_4 = pSVar6->st_info & 0xf, var_4 != ((to->super_Symbol).field_0x28 & 0xf) ||
            (to->symsize_ != var_9)))) {
          p_Var8 = (type_6 *)(to->super_Symbol).name_;
          if ((*(char *)&p_Var8->_M_nxt == '_') && (*(char *)((int)&p_Var8->_M_nxt + 1) == 'Z')) {
            var_9 = pSVar6->st_value;
            _adjust_common_sizes = var_3;
            local_38 = 0;
            local_3c = (type_14)
                       (var_9 >> 0x18 | (var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 |
                       var_9 << 0x18);
            local_40 = var_24;
            if (((to->super_Symbol).field_0x2a & 7) != 0) {
LAB_001661e5:
                    /* WARNING: Subroutine does not return */
              var_2("../../gold/symtab.h",0xa1,"object");
            }
            var_18 = (to->super_Symbol).u1_;
            local_28._M_p = (type_7)0x0;
            local_2c = (type_16 **)to->value_;
            pSVar20 = this;
            pSVar21 = this;
            var_26._8_4_ = p_Var8;
            local_30 = var_6;
            __node_gen._M_h =
                 (__hashtable_alloc *)
                 std::__detail::
                 _Map_base<char_const*,var_13::pair<char_const*_const,var_13::unordered_set<var_12::Symbol_location,_gold::Symbol_location_hash,var_13::equal_to<var_12::Symbol_location>,var_13::allocator<var_12::Symbol_location>var_14>var_14>,var_13::allocator<std::pair<char_const*_const,var_13::unordered_set<var_12::Symbol_location,_gold::Symbol_location_hash,var_13::equal_to<var_12::Symbol_location>,var_13::allocator<var_12::Symbol_location>var_14>var_14>var_14>,var_13::__detail::_Select1st,var_13::equal_to<char_const*>,var_13::hash<char_const*>,var_13::__detail::_Mod_range_hashing,var_13::__detail::_Default_ranged_hash,var_13::__detail::_Prime_rehash_policy,var_13::__detail::var_25<false,_false,var_23>,var_23>
                 ::operator[]((_Map_base<char_const*,var_13::pair<char_const*_const,var_13::unordered_set<var_12::Symbol_location,_gold::Symbol_location_hash,var_13::equal_to<var_12::Symbol_location>,var_13::allocator<var_12::Symbol_location>var_14>var_14>,var_13::allocator<std::pair<char_const*_const,var_13::unordered_set<var_12::Symbol_location,_gold::Symbol_location_hash,var_13::equal_to<var_12::Symbol_location>,var_13::allocator<var_12::Symbol_location>var_14>var_14>var_14>,var_13::__detail::_Select1st,var_13::equal_to<char_const*>,var_13::hash<char_const*>,var_13::__detail::_Mod_range_hashing,var_13::__detail::_Default_ranged_hash,var_13::__detail::_Prime_rehash_policy,var_13::__detail::var_25<false,_false,var_23>,var_23>
                               *)&this->candidate_odr_violations_,(type_19 *)(var_26 + 8));
            std::
            _Hashtable<var_12::Symbol_location,_gold::Symbol_location,var_13::allocator<var_12::Symbol_location>,var_13::__detail::_Identity,var_13::equal_to<var_12::Symbol_location>,_gold::Symbol_location_hash,var_13::__detail::_Mod_range_hashing,var_13::__detail::_Default_ranged_hash,var_13::__detail::_Prime_rehash_policy,var_13::__detail::var_25<true,var_23,var_23>var_14>
            ::
            _M_insert<const_gold::Symbol_location&,var_13::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<var_12::Symbol_location,var_23>var_14>var_14>var_14>
                      ((_Hashtable<std::__cxx11::basic_string<char,var_13::char_traits<char>,var_13::allocator<char>var_14>,var_13::__cxx11::basic_string<char,var_13::char_traits<char>,var_13::allocator<char>var_14>,var_13::allocator<std::__cxx11::basic_string<char,var_13::char_traits<char>,var_13::allocator<char>var_14>var_14>,var_13::__detail::_Identity,var_13::equal_to<std::__cxx11::basic_string<char,var_13::char_traits<char>,var_13::allocator<char>var_14>var_14>,var_13::hash<std::__cxx11::basic_string<char,var_13::char_traits<char>,var_13::allocator<char>var_14>var_14>,var_13::__detail::_Mod_range_hashing,var_13::__detail::_Default_ranged_hash,var_13::__detail::_Prime_rehash_policy,var_13::__detail::var_25<true,var_23,var_23>var_14>
                        *)var_26,__node_gen._M_h,&var_31,&__node_gen,0,1,pSVar20,
                       pSVar21);
            var_26._8_4_ = (to->super_Symbol).name_;
            __node_gen._M_h =
                 (__hashtable_alloc *)
                 std::__detail::
                 _Map_base<char_const*,var_13::pair<char_const*_const,var_13::unordered_set<var_12::Symbol_location,_gold::Symbol_location_hash,var_13::equal_to<var_12::Symbol_location>,var_13::allocator<var_12::Symbol_location>var_14>var_14>,var_13::allocator<std::pair<char_const*_const,var_13::unordered_set<var_12::Symbol_location,_gold::Symbol_location_hash,var_13::equal_to<var_12::Symbol_location>,var_13::allocator<var_12::Symbol_location>var_14>var_14>var_14>,var_13::__detail::_Select1st,var_13::equal_to<char_const*>,var_13::hash<char_const*>,var_13::__detail::_Mod_range_hashing,var_13::__detail::_Default_ranged_hash,var_13::__detail::_Prime_rehash_policy,var_13::__detail::var_25<false,_false,var_23>,var_23>
                 ::operator[]((_Map_base<char_const*,var_13::pair<char_const*_const,var_13::unordered_set<var_12::Symbol_location,_gold::Symbol_location_hash,var_13::equal_to<var_12::Symbol_location>,var_13::allocator<var_12::Symbol_location>var_14>var_14>,var_13::allocator<std::pair<char_const*_const,var_13::unordered_set<var_12::Symbol_location,_gold::Symbol_location_hash,var_13::equal_to<var_12::Symbol_location>,var_13::allocator<var_12::Symbol_location>var_14>var_14>var_14>,var_13::__detail::_Select1st,var_13::equal_to<char_const*>,var_13::hash<char_const*>,var_13::__detail::_Mod_range_hashing,var_13::__detail::_Default_ranged_hash,var_13::__detail::_Prime_rehash_policy,var_13::__detail::var_25<false,_false,var_23>,var_23>
                               *)&this->candidate_odr_violations_,(type_19 *)(var_26 + 8));
            std::
            _Hashtable<var_12::Symbol_location,_gold::Symbol_location,var_13::allocator<var_12::Symbol_location>,var_13::__detail::_Identity,var_13::equal_to<var_12::Symbol_location>,_gold::Symbol_location_hash,var_13::__detail::_Mod_range_hashing,var_13::__detail::_Default_ranged_hash,var_13::__detail::_Prime_rehash_policy,var_13::__detail::var_25<true,var_23,var_23>var_14>
            ::
            _M_insert<const_gold::Symbol_location&,var_13::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<var_12::Symbol_location,var_23>var_14>var_14>var_14>
                      ((_Hashtable<std::__cxx11::basic_string<char,var_13::char_traits<char>,var_13::allocator<char>var_14>,var_13::__cxx11::basic_string<char,var_13::char_traits<char>,var_13::allocator<char>var_14>,var_13::allocator<std::__cxx11::basic_string<char,var_13::char_traits<char>,var_13::allocator<char>var_14>var_14>,var_13::__detail::_Identity,var_13::equal_to<std::__cxx11::basic_string<char,var_13::char_traits<char>,var_13::allocator<char>var_14>var_14>,var_13::hash<std::__cxx11::basic_string<char,var_13::char_traits<char>,var_13::allocator<char>var_14>var_14>,var_13::__detail::_Mod_range_hashing,var_13::__detail::_Default_ranged_hash,var_13::__detail::_Prime_rehash_policy,var_13::__detail::var_25<true,var_23,var_23>var_14>
                        *)var_26,__node_gen._M_h,&var_32,&__node_gen,0,1);
          }
        }
      }
    }
    local_70 = &var_31;
    local_74 = &var_32;
    var_20 = (*var_3->_vptr_Object[5])(var_3);
    if (var_20 == 0) {
      SVar16 = (type_10)sym->p_->st_info;
      var_29 = SVar16;
    }
    else {
      SVar16 = (type_10)sym->p_->st_info;
      var_29 = (type_2)(type_1)(to->super_Symbol).field_0x28;
    }
    var_9 = var_27((int)SVar16 >> 4,(bool)(var_3->field_0x2c & 1),var_8,var_7);
    var_6 = to->symsize_;
    bVar12 = var_28(&to->super_Symbol,var_9,var_29 & var_30,OBJECT,var_3,local_70,
                             local_74,is_default_version);
    if (bVar12) {
      var_34 = (to->super_Symbol).field_0x28;
      var_9 = to->value_;
      var_22<32,var_23>(this,to,sym,var_8,var_7,var_3,version);
      if (var_31 != false) {
        if (to->symsize_ < var_6) {
          to->symsize_ = var_6;
        }
        if (to->value_ < var_9) {
          to->value_ = var_9;
        }
      }
      if ((var_32 != false) &&
         ((var_33 = (to->super_Symbol).field_0x2c, (var_33 & 1) == 0 || ((var_33 & 2) != 0)))) {
        (to->super_Symbol).field_0x2c =
             (to->super_Symbol).field_0x2c & 0xfd | (var_34 >> 4 == 2) * '\x02' | 1;
      }
    }
    else {
      pSVar6 = sym->p_;
      if (var_31 != false) {
        var_9 = pSVar6->st_size;
        var_9 = var_9 >> 0x18 | (var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 | var_9 << 0x18
        ;
        if (var_6 < var_9) {
          to->symsize_ = var_9;
        }
        var_9 = pSVar6->st_value;
        var_9 = var_9 >> 0x18 | (var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 | var_9 << 0x18
        ;
        if (to->value_ < var_9) {
          to->value_ = var_9;
        }
      }
      if (var_32 != false) {
        var_34 = (to->super_Symbol).field_0x2c;
        if (((var_34 & 1) == 0) || ((var_34 & 2) != 0)) {
          (to->super_Symbol).field_0x2c =
               (to->super_Symbol).field_0x2c & 0xfd |
               ((int)(type_2)pSVar6->st_info >> 4 == 2) * '\x02' | 1;
        }
      }
      var_34 = pSVar6->st_other & 3;
      if ((pSVar6->st_other & 3) != 0) {
        var_33 = (to->super_Symbol).field_0x29;
        if (((var_33 & 3) == 0) || (var_34 < (var_33 & 3))) {
          (to->super_Symbol).field_0x29 = var_34 | var_33 & 0xfc;
        }
      }
    }
    var_34 = (to->super_Symbol).field_0x2a;
    if ((var_34 & 7) == 0) {
      pOVar7 = (to->super_Symbol).u1_.output_segment;
      var_33 = *(type_1 *)&pOVar7->output_lists_[3].
                        super__Vector_base<var_12::Output_data*,var_13::allocator<var_12::Output_data*>var_14>.
                        _M_impl._M_end_of_storage;
      if ((((var_33 & 1) != 0) && ((char)var_34 < '\0')) &&
         (((to->super_Symbol).field_0x2c & 2) == 0)) {
        *(type_1 *)&pOVar7->output_lists_[3].
                  super__Vector_base<var_12::Output_data*,var_13::allocator<var_12::Output_data*>var_14>.
                  _M_impl._M_end_of_storage = var_33 | 2;
      }
    }
    if (var_31 != false) {
      if (parameters->options_ == (type_9 *)0x0) {
LAB_00165d90:
                    /* WARNING: Subroutine does not return */
        var_2("../../gold/parameters.h",0x5c,"options");
      }
      if ((parameters->options_->warn_common_).value != false) {
        var_9 = sym->p_->st_size;
        var_9 = var_9 >> 0x18 | (var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 | var_9 << 0x18
        ;
        if (var_9 < var_6) {
          pcVar18 = "common of \'%s\' overriding smaller common";
        }
        else if (var_6 < var_9) {
          pcVar18 = "common of \'%s\' overidden by larger common";
        }
        else {
          pcVar18 = "multiple common of \'%s\'";
        }
        pcVar18 = (char *)var_16(pcVar18);
        var_35(false,pcVar18,&to->super_Symbol,OBJECT,var_3);
      }
    }
  }
  return;
}


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

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

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

{
  byte bVar1;
  int *piVar2;
  code *pcVar3;
  undefined4 *puVar4;
  char cVar5;
  byte bVar6;
  char *pcVar7;
  int iVar8;
  undefined4 uVar9;
  undefined **ppuVar10;
  undefined4 uVar11;
  uint uVar12;
  undefined ***pppuVar13;
  bool bVar14;
  undefined **ppuStack_84;
  undefined **ppuStack_80;
  undefined1 auStack_7c [4];
  undefined4 *local_78;
  undefined4 **local_74;
  int **local_70;
  undefined1 *local_6c;
  uint local_68;
  char **local_64;
  undefined **local_60;
  undefined **local_5c;
  uint local_58;
  undefined1 local_54 [8];
  char *local_4c;
  undefined4 local_48;
  int *local_44;
  int local_40;
  uint local_3c;
  undefined4 local_38;
  undefined4 *local_34;
  undefined1 *local_30;
  undefined4 local_2c;
  undefined4 local_28;
  
  local_5c = &__DT_PLTGOT;
  local_58 = param_7;
  local_68 = param_11;
  if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {
    ppuStack_84 = (undefined **)0x237534;
    ppuStack_80 = (undefined **)param_2;
    local_5c = &__DT_PLTGOT;
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0("../../gold/symtab.h",0xaa);
  }
  local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)((int)param_4 + 0x2b) >> 5) & 0xffffff01);
  local_6c = (undefined1 *)param_4[3];
  ppuVar10 = &__DT_PLTGOT;
  if (param_9 == (int *)param_4[2]) {
    if ((byte)local_64 == '\0') {
      local_5c = &__DT_PLTGOT;
      cVar5 = FUN_00122bf0(local_6c);
      ppuVar10 = local_5c;
      if ((cVar5 == '\x01') || ((char)local_58 == '\0')) goto LAB_00165abe;
    }
    else if ((local_6c != (undefined1 *)0x0) &&
            ((local_58._0_1_ = (char)param_7, bVar14 = (char)local_58 != '\0', ppuVar10 = local_5c,
             bVar14 && (local_5c = &__DT_PLTGOT, param_6 == local_6c)))) goto LAB_00165d65;
  }
  else {
LAB_00165abe:
    local_5c = ppuVar10;
    bVar14 = (char)local_58 == '\0';
    ppuVar10 = local_5c;
    if ((param_6 == (undefined1 *)0xfff1 && bVar14) &&
       (((byte)local_64 == '\0' && (local_6c == (undefined1 *)0xfff1)))) {
LAB_00165d65:
      uVar12 = *(uint *)(*param_5 + 4);
      ppuVar10 = local_5c;
      if ((uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18) ==
          param_4[0xc]) {
        return;
      }
    }
  }
  local_5c = ppuVar10;
  pppuVar13 = (undefined ***)auStack_7c;
  local_60 = local_5c + 0xde;
  piVar2 = *(int **)(*local_60 + 0xc);
  if (piVar2 == (int *)0x0) {
    ppuStack_84 = local_5c + -0x32ad3;
    ppuStack_80 = (undefined **)piVar2;
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(local_5c + -0x385a4,0x69);
  }
  if ((*(char *)(piVar2[1] + 0xd) != '\0') &&
     (cVar5 = (**(code **)(*piVar2 + 0xa4))(piVar2,param_4,param_5,param_9,param_10), cVar5 != '\0')
     ) {
    return;
  }
  if ((*(byte *)(param_9 + 0xb) & 1) == 0) {
    pcVar7 = (char *)(*(byte *)(*param_5 + 0xc) & 0xf);
    if (((char)pcVar7 == '\x05') &&
       (((char)local_58 != '\0' || (pcVar7 = (char *)FUN_00122bf0(param_6), (char)pcVar7 == '\0'))))
    {
      if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {
        uVar9 = *(undefined4 *)(param_4[2] + 4);
        FUN_00123e20(&local_34,param_4);
        puVar4 = local_34;
        uVar11 = gettext(local_5c + -0x32aad);
                    /* try { // try from 001660bf to 001660c3 has its CatchHandler @ 00166201 */
        FUN_0005ad30(uVar11,puVar4,uVar9);
        if (local_34 == &local_2c) {
          return;
        }
        FUN_001807a0(local_34);
        return;
      }
      goto LAB_001661e5;
    }
    *(byte *)((int)param_4 + 0x2a) = *(byte *)((int)param_4 + 0x2a) | 0x80;
    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);
  }
  else {
    if ((param_6 == (undefined1 *)0x0) && ((*(byte *)((int)param_4 + 0x29) & 3) - 1 < 2)) {
      return;
    }
    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 1;
    iVar8 = (**(code **)(*param_9 + 0x14))(param_9);
  }
  if ((iVar8 == 0) && ((*(byte *)(param_9 + 0xb) & 1) == 0)) {
    *(byte *)((int)param_4 + 0x2b) = *(byte *)((int)param_4 + 0x2b) | 0x40;
  }
  if (((*(byte *)((int)param_4 + 0x2a) & 7) == 0) &&
     (iVar8 = (**(code **)(*(int *)param_4[2] + 0x14))((int *)param_4[2]), iVar8 != 0)) {
    iVar8 = *(int *)(*local_60 + 8);
    pppuVar13 = (undefined ***)auStack_7c;
    if (iVar8 == 0) goto LAB_00165d90;
    if (*(char *)(*(int *)(iVar8 + 0x593c) + 0x61) != '\0') {
      if (((((*(byte *)((int)param_4 + 0x2a) & 7) != 0) ||
           ((*(byte *)((int)param_4 + 0x2b) & 0x20) != 0)) ||
          (cVar5 = FUN_00122bf0(param_4[3]), cVar5 != '\x01')) ||
         (((char)local_58 != '\0' || (cVar5 = FUN_00122bf0(param_6), cVar5 == '\0')))) {
        ppuStack_84 = param_10;
        FUN_001648f0(param_3,param_4,param_5,param_6,local_58 & 0xff,param_9);
        return;
      }
      local_58 = param_4[0xd];
      uVar12 = param_4[0xc];
      ppuStack_84 = param_10;
      FUN_001648f0(param_3,param_4,param_5,param_6,0,param_9);
      if ((uint)param_4[0xd] < local_58) {
        param_4[0xd] = local_58;
      }
      if (uVar12 <= (uint)param_4[0xc]) {
        return;
      }
      param_4[0xc] = uVar12;
      return;
    }
  }
  else {
    iVar8 = *(int *)(*local_60 + 8);
    if (iVar8 == 0) goto LAB_00165d90;
  }
  if (*(char *)(iVar8 + 0xe0d) == '\0') {
    local_74 = &local_34;
    local_70 = &local_44;
    pppuVar13 = (undefined ***)auStack_7c;
  }
  else {
    iVar8 = *param_5;
    if ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 != 2) {
      local_74 = &local_34;
      local_70 = &local_44;
      pppuVar13 = (undefined ***)auStack_7c;
      if (*(byte *)(param_4 + 10) >> 4 != 2) goto LAB_00165ba8;
    }
    local_74 = &local_34;
    local_70 = &local_44;
    pppuVar13 = (undefined ***)auStack_7c;
    if ((((byte)local_64 & param_8 != 0) != 0) &&
       (pppuVar13 = (undefined ***)auStack_7c, local_6c != (undefined1 *)0x0)) {
      uVar12 = *(uint *)(iVar8 + 8);
      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
      pppuVar13 = (undefined ***)auStack_7c;
      if ((uVar12 != 0) && (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != 0)) {
        local_64 = (char **)(CONCAT31(local_64._1_3_,*(byte *)(iVar8 + 0xc)) & 0xffffff0f);
        if (((byte)local_64 != (*(byte *)(param_4 + 10) & 0xf)) ||
           (pppuVar13 = (undefined ***)auStack_7c, param_4[0xd] != uVar12)) {
          pcVar7 = (char *)*param_4;
          local_74 = &local_34;
          local_70 = &local_44;
          pppuVar13 = (undefined ***)auStack_7c;
          if ((*pcVar7 == '_') && (pppuVar13 = (undefined ***)auStack_7c, pcVar7[1] == 'Z')) {
            uVar12 = *(uint *)(iVar8 + 4);
            local_44 = param_9;
            local_38 = 0;
            local_3c = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |
                       uVar12 << 0x18;
            local_40 = param_8;
            if ((*(byte *)((int)param_4 + 0x2a) & 7) != 0) {
LAB_001661e5:
              ppuStack_84 = local_5c + -0x32ab8;
              ppuStack_80 = (undefined **)pcVar7;
                    /* WARNING: Subroutine does not return */
              FUN_0005f0b0((int)local_5c + -0xe1673,0xa1);
            }
            local_34 = (undefined4 *)param_4[2];
            local_28 = 0;
            local_30 = local_6c;
            local_2c = param_4[0xc];
            ppuStack_80 = param_3;
            ppuStack_84 = param_3;
            local_64 = &local_4c;
            local_4c = pcVar7;
            local_48 = FUN_001646d0(param_3 + 0x47,local_64);
            local_6c = local_54;
            local_78 = &local_48;
            FUN_001650c0(local_6c,local_48,local_70,local_78,0,1);
            local_4c = (char *)*param_4;
            local_48 = FUN_001646d0(param_3 + 0x47,local_64);
            FUN_001650c0(local_6c,local_48,local_74,local_78,0,1);
            pppuVar13 = &ppuStack_84;
          }
        }
      }
    }
  }
LAB_00165ba8:
  iVar8 = *param_9;
  *(int **)((int)pppuVar13 + -0x10) = param_9;
  pcVar3 = *(code **)(iVar8 + 0x14);
  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165bb1;
  iVar8 = (*pcVar3)();
  if (iVar8 == 0) {
    bVar6 = *(byte *)(*param_5 + 0xc);
  }
  else {
    bVar6 = *(byte *)(param_4 + 10);
  }
  local_64 = (char **)(local_58 & 0xff);
  *(char ***)((int)pppuVar13 + -0x10) = local_64;
  *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165be9;
  uVar9 = FUN_001630f0();
  local_58 = param_4[0xd];
  *(uint *)((int)pppuVar13 + -4) = local_68 & 0xff;
  *(undefined4 ***)((int)pppuVar13 + -8) = local_74;
  *(int ***)((int)pppuVar13 + -0xc) = local_70;
  *(int **)((int)pppuVar13 + -0x10) = param_9;
  *(undefined4 *)((int)pppuVar13 + -0x14) = 0;
  *(uint *)((int)pppuVar13 + -0x18) = bVar6 & 0xf;
  *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;
  *(undefined4 **)((int)pppuVar13 + -0x20) = param_4;
  *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165c08;
  cVar5 = FUN_00163520();
  if (cVar5 == '\0') {
    iVar8 = *param_5;
    if ((char)local_44 != '\0') {
      uVar12 = *(uint *)(iVar8 + 8);
      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
      if (local_58 < uVar12) {
        param_4[0xd] = uVar12;
      }
      uVar12 = *(uint *)(iVar8 + 4);
      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
      if ((uint)param_4[0xc] < uVar12) {
        param_4[0xc] = uVar12;
      }
    }
    if ((char)local_34 != '\0') {
      if (((*(byte *)(param_4 + 0xb) & 1) == 0) || ((*(byte *)(param_4 + 0xb) & 2) != 0)) {
        *(byte *)(param_4 + 0xb) =
             *(byte *)(param_4 + 0xb) & 0xfd |
             ((int)(uint)*(byte *)(iVar8 + 0xc) >> 4 == 2) * '\x02' | 1;
      }
    }
    bVar6 = *(byte *)(iVar8 + 0xd) & 3;
    if ((*(byte *)(iVar8 + 0xd) & 3) != 0) {
      bVar1 = *(byte *)((int)param_4 + 0x29);
      if (((bVar1 & 3) == 0) || (bVar6 < (bVar1 & 3))) {
        *(byte *)((int)param_4 + 0x29) = bVar6 | bVar1 & 0xfc;
      }
    }
  }
  else {
    bVar6 = *(byte *)(param_4 + 10);
    uVar12 = param_4[0xc];
    *(undefined ***)((int)pppuVar13 + -8) = param_10;
    *(int **)((int)pppuVar13 + -0xc) = param_9;
    *(char ***)((int)pppuVar13 + -0x10) = local_64;
    *(undefined1 **)((int)pppuVar13 + -0x14) = param_6;
    *(int **)((int)pppuVar13 + -0x18) = param_5;
    *(undefined4 **)((int)pppuVar13 + -0x1c) = param_4;
    *(undefined ***)((int)pppuVar13 + -0x20) = param_3;
    local_68 = CONCAT31(local_68._1_3_,bVar6 >> 4);
    *(undefined4 *)((int)pppuVar13 + -0x24) = 0x16600e;
    FUN_001648f0();
    if ((char)local_44 != '\0') {
      if ((uint)param_4[0xd] < local_58) {
        param_4[0xd] = local_58;
      }
      if ((uint)param_4[0xc] < uVar12) {
        param_4[0xc] = uVar12;
      }
    }
    if (((char)local_34 != '\0') &&
       (((*(byte *)(param_4 + 0xb) & 1) == 0 || ((*(byte *)(param_4 + 0xb) & 2) != 0)))) {
      *(byte *)(param_4 + 0xb) =
           *(byte *)(param_4 + 0xb) & 0xfd | ((char)local_68 == '\x02') * '\x02' | 1;
    }
  }
  if ((*(byte *)((int)param_4 + 0x2a) & 7) == 0) {
    bVar6 = *(byte *)(param_4[2] + 0x2c);
    if ((((bVar6 & 1) != 0) && ((char)*(byte *)((int)param_4 + 0x2a) < '\0')) &&
       ((*(byte *)(param_4 + 0xb) & 2) == 0)) {
      *(byte *)(param_4[2] + 0x2c) = bVar6 | 2;
    }
  }
  if ((char)local_44 != '\0') {
    iVar8 = *(int *)(*local_60 + 8);
    if (iVar8 == 0) {
LAB_00165d90:
      *(int *)((int)pppuVar13 + -4) = iVar8;
      *(undefined ***)((int)pppuVar13 + -8) = local_5c + -0x32aba;
      *(undefined4 *)((int)pppuVar13 + -0xc) = 0x5c;
      *(undefined ***)((int)pppuVar13 + -0x10) = local_5c + -0x385a4;
                    /* WARNING: Subroutine does not return */
      *(undefined **)((int)pppuVar13 + -0x14) = &UNK_00165da9;
      FUN_0005f0b0();
    }
    if (*(char *)(iVar8 + 0x43e5) != '\0') {
      uVar12 = *(uint *)(*param_5 + 8);
      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
      if (uVar12 < local_58) {
        ppuVar10 = local_5c + -0x32a9f;
      }
      else if (local_58 < uVar12) {
        ppuVar10 = local_5c + -0x32a94;
      }
      else {
        ppuVar10 = (undefined **)((int)local_5c + -0xcaa26);
      }
      *(undefined ***)((int)pppuVar13 + -0x10) = ppuVar10;
      *(undefined4 *)((int)pppuVar13 + -0x14) = 0x165cf0;
      uVar9 = gettext();
      *(int **)((int)pppuVar13 + -0x10) = param_9;
      *(undefined4 *)((int)pppuVar13 + -0x14) = 0;
      *(undefined4 **)((int)pppuVar13 + -0x18) = param_4;
      *(undefined4 *)((int)pppuVar13 + -0x1c) = uVar9;
      *(undefined4 *)((int)pppuVar13 + -0x20) = 0;
      *(undefined4 *)((int)pppuVar13 + -0x24) = 0x165cfe;
      FUN_00163350();
    }
  }
  return;
}

